Opening a MVC4 EF5 project created in VS 2012 in 2010 - visual-studio-2010

I created a project in the express edition of VS 2012, it was MVC4 using EF5 Model First with enums. I get this error when trying to run the same project now in VS 2010.
Error 1 Error 5: The element 'Schema' in namespace 'http://schemas.microsoft.com/ado/2008/09/edm' has invalid child element 'EnumType' in namespace 'http://schemas.microsoft.com/ado/2008/09/edm'. List of possible elements expected: 'Using, Association, ComplexType, EntityType, Function, EntityContainer' in namespace 'http://schemas.microsoft.com/ado/2008/09/edm' as well as any element in namespace '##other'.
It seems VS2010 does not support enums? But I have checked the EF version being used and it is still v5... so I am confused.
Any ideas?

Entity framework will reference 4.4 when you're targeting .NET 4.0 with vs 2010.
The 4.4 comes from the assembly version of EntityFramework.dll when
you install EntityFramework 5.0 into a project that targets .NET
Framework 4.0. This is merely a side effect of how the runtime loads
and binds to assemblies, and in no way reflects the version of the
product.
for more information check There is no such thing as Entity Framework 4.4
Compatibility
Some features are only available when writing an application that
targets .NET 4.5. This includes enum support, spatial data types,
table-valued functions and the performance improvements. If you are
targeting .NET 4.0 you still get all the bug fixes and other minor
improvements.
For more information check EF5 Release under compatibility section.
I hope this will help to you.

Related

c# null conditional member access operators

We've recently received a project that was started using Visual Studio 2015. In the code there were places where developers used
null conditional member access
operator. We are using Visual Studio 2013 and the code does not compile I've read the documentation from msdn (https://msdn.microsoft.com/en-us/library/6a71f45d(v=vs.140).aspx) and it states that this operator is not available with Visual Studio 2013. What's the logic behind this decision? The c# syntax depends on IDE? Shouldn't this be fixed for the same .net version?
This is simply a matter of what is available to use with different versions of C# and VS.
This is not a bug. Clearly that solution is making use of the latest tooling and version c# available, you are not. The same applies if you where only using .net 2.0, you wouldn't be able to use Linq. Thus you have to accommodate it in some way
With VS 2013, it comes with .net 4.5.1 and C# 5, you can
Either install .net framework 4.6 and C#6 , then just update the targeted framework version in your projects
or use VS2015, then just update the targeted framework version in your projects
or laboriously reverse that syntax sugar back like the following:
someObject?.PossiblySafeProperty?.LessSafeNestedProperty
//to
string valueYouWant = null;
if(someObject != null && someObject.PossiblySafeProperty!=null)
{
valueYouWant = someObject.PossiblySafeProperty.LessSafeNestedProperty;
}
As far as what the IDE can interpret yes, C# 6 syntax is only available in VS2015. However, using the latest compiler will fix your build errors(albeit not showing up correct in the IDE). And the .Net version has nothing to do with the languages syntax, only the libraries you can use in it. The logic behind the decision? To get you to upgrade to a newer product, same as offering Windows 10 for free. Microsoft wants you using the "latest and greatest" they have to offer.

how can i use Entity Framework 4.1 in Visual Studio 2012?

I have a web application on a web farm and i use .NET 4 and entity data model 4.1.
when i started working on this web application i used visual studio 2010, and today i have uninstalled it and installed new version (Visual Studio 2012).
Due to some reasons, i have deleted my ado.net entity data model to recreate it, but i
pay attention that visual studio 2012 use entity framework 5 not 4.1. I have updated it but in old model i can context constructor to change my connection string but in this new model have no constructor, is that true?
I have installed EF 4.1 but it doesn't works and I've added version 5 to my project.
Background info: my web application is on a shared host and i can not update it to EF 5.
How can i use entity framework 4.1 in visual studio 2012 ?
is that possible? if yes, how?
Remove Existing (Entity framework 5)
Remove the existing reference (to Entity framework 5) under the References section in your Project in Solution explorer.
Remove the corresponding entry from your packages.config file. If you open the packages.config file, you will see an xml structure and you will see an element with id EntityFramework with version attribute value as 5.0.0. Remove that line( that package element).
Add Again (Entity framework 4.1)
Now go to the package manager window(View->Other Windows -> Package Manager Console) and execute the following command there.
Install-Package EntityFramework -Version 4.1.10331.0
This will download EF 4.1 to your project and you will see the success message like below.
Reference : http://nuget.org/packages/EntityFramework/4.1.10331.0
Always keep in mind that there are a lot of improvements made in EF 5. So consider to consume all those as possible as you can.

Table Valued Functions in EDMX with Entity Framework 5 / Visual Studio 2010

If it possible to use table valued functions in an EDMX with Entity Framework 5 RC / Visual Studio 2010?
I cannot see the option in the EDMX designer, I have a feeling that the designer is in .net 4.5? Are my suspicions correct? Or perhaps in Visual Studio 11?
I'm not really in a position to be able to upgrade our project to .net 4.5 yet, is there another way of using table valued functions (perhaps modifying the edmx by hand?).
ADDITIONAL INFO:
This blog post on msdn helps confirm the incompatibility:
Some features are only available when writing an application that
targets .NET 4.5. This includes enum support, spatial data types,
table-valued functions and the performance improvements. If you are
targeting .NET 4.0 you still get all the bug fixes and other minor
improvements.
However interestingly, this tutorial discuses modifying the EDMX directly to add support for TVF, but it appears to be for a an old beta. The XML intellisense also didn't find the elements discussed in the tutorial, but it might be because it was using a different schema. Unfortunately I've run out of time to try and apply the tutorial to the new EF5 Release candidate, but I'd be interested in knowing if anyone has had any luck.
Unfortunately table valued function support is currently dependent on .NET 4.5 and VS 2012.
I have been using this approach in order to use table-valued functions from EF 4. Basically it includes hand-editing the EDMX file. The downside to that approach is that you need to edit the file manually whenever you update your model.

IronRuby references conflict with System.Linq?

Using Visual Studio 2010, when I add the four IronRuby references to an existing project that uses Linq in several methods, the project won't compile due to not being able to find System.Linq all of a sudden. Does the IronRuby/.Net 4.0 Framework change the location of Linq or am I missing something?
Thanks,
Becky
Are you using the build for .NET 4.0?
The 3.0 build does have those overrides but they should be included in .NET 4.0.
http://ironruby.codeplex.com/Release/ProjectReleases.aspx?ReleaseId=33305

VS2008 to VS2010 project conversion

I have a component project build in VS2008 and targeting the .NET Framework 3.5. I recently downloaded the VS2010 Beta 1 to make sure this project would convert over correctly when the time comes to switch to the new IDE. This project contains references to a couple of 3rd party dlls built against version 2.0 of the framework. I changed my project to build against the 4.0 version of the framework but when I try to build the project I get a ton of errors that looks like the compiler can't recognize the class types of those 3rd party libraries similar to what is below.
"The type or namespace name 'Data' does not exist in the namespace 'Microsoft.Practices.EnterpriseLibrary' (are you missing an assembly reference?)"
I'm trying to figure out why I can't compile. From what I have read .NET 4.0 uses a different version of the CLR. How or why would that impact my ability to have access to those types? Am I going to have to
a) Get the source code and recompile in VS2010 / .NET 4.0 and then reference that assembly or
b) Wait for project authors to do "a" above and release their assemblies targeting the 4.0 CLR? or
c) Something else because perhaps my VS2010 install is borked?
I can change the project properties to target 3.5 and everything works as I expect under the 2010 IDE.
I suspect this is because .NET 4.0 uses CLR 4.0, not 2.0. EL 4.1 will have been built against CLR 2.0, so I'm not sure I'd expect it to be found without help.
Seems like a CLR versioning issue to me.
For the current time, I will recommend b) and/or just compile to v2.0/v3.5.
Any specific feature that you want to use in v4.0?
I wanted to mark this question as answered and based on the comments and my own experiences, I think that Mehrdad is correct in the comment attached to the question and that it was a VS2010 project conversion problem.

Resources