The information in this post is out of date.
Visit msdn.com/data/ef for the latest information on current and past releases of EF.
Today we are pleased to announce the release of two new versions of the EntityFramework NuGet package.
The 4.3.1 version includes some bug fixes for the 4.3 package we released a few weeks ago. We are also making the first beta of EF 5 available as a pre-release package.
What’s in 5.0.0-beta1
This is the first preview of EF 5 and includes all the features and bug fixes in EF 4.3.1 in addition to a number of new features that are available in applications targeting .NET Framework 4.5. (You will need Visual Studio 11 Beta to work with the .NET Framework 4.5)
- Enum support allows you to have enum properties in your entity classes. This new feature is available for Model, Database and Code First.
- Table-Valued functions in your database can now be used with Database First.
- Spatial data types can now be exposed in your model using the DbGeography and DbGeometry types. Spatial data is supported in Model, Database and Code First.
- The Performance enhancements that we recently blogged about are included in EF 5 Beta 1.
- Visual Studio 11 includes LocalDb rather than SQLEXPRESS. The EntityFramework NuGet package will now check which database is available when the package is installed and use a configuration file setting to set the default database server that Code First databases will be created on. If SQLEXPRESS is running, it will be used. If SQLEXPRESS is not available then LocalDb will be registered as the default instead.
The following new features are also available in the Entity Model Designer in Visual Studio 11 Beta:
- Multiple-diagrams per model allows you to have several diagrams that visualize subsections of your overall model.
- Shapes on the design surface can now have coloring applied.
- Batch import of stored procedures allows multiple stored procedures to be added to the model during model creation.
Known Issues
We will keep this list updated with known issues for this release:
- There is a known issue using the Code First Migrations commands in Visual Studio 2010. We are working on an updated package that addresses this issue. You will receive the following error when using migrations commands from EF 5 Beta 1 in Visual Studio 2010:
Could not load file or assembly ‘Microsoft.VisualStudio.Shell.10.0, Version=11.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a’ or one of its dependencies. The system cannot find the file specified. - There is a known issue in MVC4 applications in Visual Studio 11 that is described in more detail here.
.
Getting Started
You can get EF 5 Beta 1 by installing the latest pre-release version of the EntityFramework NuGet package.
These existing walkthroughs provide a good introduction to using the Code First, Model First & Database First workflows available in Entity Framework:
We have created walkthroughs for the new features in EF 5:
Compatibility
This version of the NuGet package is fully compatible with Visual Studio 11 Beta and can be used for applications targeting .NET 4.0 and 4.5.
The new features listed above will only be available when writing an application that targets .NET 4.5.
EF 5 will work with Visual Studio 2010 but there is currently a known issue that prevents the Code First Migrations commands from being used in Visual Studio 2010. See the Known Issues section (above) for more details.
What’s in 4.3.1?
A few weeks back we released EF 4.3, which included the new Code First Migrations feature and a few bug fixes. Today we are releasing the 4.3.1 patch release that includes some bug fixes to the 4.3 release.
This is a fully supported go-live release.
The changes in 4.3.1 compared to 4.3 include:
- Templates for using DbContext with Model First and Database First have been renamed from ADO.NET DbContext Generator to EF 4.x DbContext Generator. We made this rename to easily distinguish between the EF 5.x DbContext Generator that is to be used for EF 5 applications.
- Added the ability to enable Code First Migrations against an existing database. Julie Lerman blogged about using an empty initial migration to capture the initial state of the model when it is in sync with an existing database. Once this migration is generated Code First Migrations will correctly detect and scaffold changes to your model. You can now use the –IgnoreChanges to tell Code First Migrations not to scaffold any code for this initial migration (i.e. ‘Add-Migration InitialMigration –IgnoreChanges).
- Visual Studio 11 includes LocalDb rather than SQLEXPRESS. The EntityFramework NuGet package will now check which database is available when the package is installed and use a configuration file setting to set the default database server that Code First databases will be created on. If SQLEXPRESS is running, it will be used. If SQLEXPRESS is not available then LocalDb will be registered as the default.
- Fixed issue where TPC mapping in Code First was generating “Unknown Columnname” exceptions when accessing the database.
- Fixed issue where hard coded column data types were not honored in generated databases. If you used the Column data annotation or HasColumnType Fluent API method to hard code a column data type (i.e. xml, money, etc.), this data type was not used when creating the database.
- Fixed issue preventing decimal columns from being configured with the ‘Identity’ store generated pattern.
- We now provide a better exception message when context/database initialization fails due to connectivity issues with the database.
- Enabled support for configsource in configuration files when using Code First Migrations.
- Fixed issues using Moq with DbContext – as reported in this Stack Overflow question.
Getting Started
You can get EF 4.3.1 by installing the latest version of the EntityFramework NuGet package.
Check out the EF 4.3 release post for details and walkthroughs for EF 4.3.
Compatibility
This version of the NuGet package is fully compatible with Visual Studio 2010 and Visual Studio 11 Beta. It is designed to be used when writing .NET 4.0 applications.
If writing a .NET 4.5 application we recommend using the 5.0.0-beta1 version of the package instead. You can use the package in .NET 4.5 applications but you should be aware of the following known issue:
Entity Framework 4.1 thru 4.3 included additional data annotations in the System.ComponentModel.DataAnnotations namespace in the EntityFramework assembly. In .NET 4.5 these annotations were moved to be part of the .NET Framework in the System.ComponentModel.DataAnnotations.Schema namespace of the System.ComponentModel.DataAnnotations.dll assembly. If you are using EF 4.x and targeting .NET 4.5 this results in two data annotations with the same name in different assemblies. Because the annotations in the .NET Framework are in a different namespace we were not
able to use type forwarding to avoid this conflict.If you are not using the affected data annotations there is no impact on your code. If you are using the data annotations in a C# project you can use the extern modifier to ensure your code uses the annotations from EntityFramework.dll (http://msdn.microsoft.com/en-us/library/e59b22c5(v=VS.80).aspx). If you use the new annotations from the System.ComponentModel.DataAnnotations.dll assembly in .NET 4.5
Support
We are seeing a lot of great Entity Framework questions (and answers) from the community on Stack Overflow. As a result, our team is going to spend more time reading and answering questions posted on Stack Overflow.
We would encourage you to post questions on Stack Overflow using the entity-framework tag. We will also continue to monitor the Entity Framework forum.
Entity Framework Team
4.3.1 doesn´t have Beta? You said that every release will have a beta, since the release that prevent profilers to work.
If I copy all EF5 dependencies from .NET 4.5, I can use it at .NET 4.0? Like I did with 3.5SP1 and 3.5, copying System.Data.Entity.dll.
"Table-Valued functions in your database can now be used with Database First."
What about Model First and Code First?
Does anyone know if the support for unique constraints described here is in the Beta of 5? blogs.msdn.com/…/unique-constraints-in-the-entity-framework.aspx I'm hoping that associations based on unique constraints makes the cut and is included in EF 5.
One other thing that I would like to see is the ability to define value types as nullables in the conceptual model, that are not null in the store model. For example, say I have a datetime in the database. I want it to be NOT NULL. But, I want it to be DateTime? at the class-level. That way if I bind to the property in a UI, the default value is blank/null rather than 1/1/1900 or whatever the default value is for a non-nullable DateTime. The same thing would be true for any other value type. Not sure if this works with code first or not. I'm using database first with an EDMX. The designer won't let you set the nullability to nullable in the conceptual model and non-nullable in the store model.
@Richard Deeming: The Entity Designer doesn't have the ability to specify the contents of stored procedures or functions. Therefore it is not possible to use a "pure" Model First workflow to create a database with a TVF. However, you can use Model First to create the tables, then define a TVF in the database and finally use the option to "Update the model from the database" to bring the TVF back to the model. Code First still doesn't have the ability to specify stored procedures and function mapping. Therefore, although it is possible to use Code First against an existing database you won't be able to invoke stored procedure and function as mapped. The TVF walkthrough contains some links for workarounds in the first few paragraphs.
@John Miller2: Regarding Unique Constraints, unfortunately the answer is no. The feature didn't make the cut for EF 5. We are looking at including it in a future release depending on its relative priority. I encourage you to vote for it if it is important to you: data.uservoice.com/…/1050579-unique-constraint-i-e-candidate-key-support.
@Felipe Fujiy: Re not having a beta for 4.3.1, we are still trying to follow the rule of always having a beta, but there are a few reasons we decided to make an exception in this case:
– The scope of the changes is very small.
– It is sort of a date driven release for EF: we needed to have something out at the same time as EF 5.0 beta 1, and we wanted to publish EF 5.0 beta 1 the same day VS 11 beta and .NET 4.5 Beta went out.
– It would be a little confusing to have two betas going on at the same time.
– 4.3.1 is a patch release following the go live of a large new feature (Migrations). You can expect us to follow this pattern in the future when issues are found (although in some cases we might choose to still have a beta if the scope of the changes is very big).
Regarding using .NET 4.5 assemblies with .NET 4.0, although you might be able to get some things to work, what you are describing is not a tested or supported configuration, so I wouldn’t recommend you to do it.
As much as I hate to say it, I don't think I'm going to be making use of the new enums feature. I need it to store a string value rather than an int in the database. That way if I'm generating reports from Reporting Services, what comes out on the reports are meaningful values.
Also, it seems like the new designer should default to using DbContext if that's the new recommended API.
It would also be nice if the number of properties that you can specify for an object in the designer was increased. I.e. it would be nice to specify values for all the annotations that appear in the System.ComponentModel.DataAnnotations namespace for things like Required, RegularExpression, DisplayName, etc. It would also be nice if fields like DisplayName were generated automatically using a convention such as inserting spaces between words. And also, as I mentioned before, it should be possible to have a nullable value type in the conceptual model, but, have it be non-null on the store side.
The EF Core is embedded with .NET 4.5, so EF 5 will only be available against .NET 4.5? There's any chance to EF 5 and EF Core become only one library? I mean something independent. It's too hard to know the fact that we'll have to wait another version of .NET to receive awesome features like that aforementioned.
By the way, I'm very(I said VERY) excited with those news features!
Thank you guys.
@Jon Miller:
You can store the int of enum in your column and handle the description with reflection, using the DescriptionAttribute above each enum property so use reflection to catch the description from enum's properties.
I missed something like you said about designer, the possibility of add/edit DataAnnotations of properties. This is something that will increase a lot the creation of entities.
@Kim Tranjan: We are indeed looking at incorporating the EF functionality that today is implemented in the .NET Framework into our out-of-band releases. This is not happening in EF 5 though.
How does one update a project to V5 from the CTP? I'm trying to figure out what files need to be updated in references etc. after doing the package manager command.
@Jon Miller2: Re making the DbContext API the default for the Entity Designer, we are looking at that for VS 11 RTM but can't promise the change will make it on time.
A nice set of features.
Don't miss out on the little ones tough: Migration from L2S is still a nightmare because LINQ support is not as sophisticated yet (DateTime.Date for example is a major show-stopper).
Thanks for release!
Btw. do you have any roadmap of features you would like to implement in the near future?
Also how does one go about updating the T4 template stuff to pre-generate views?
I'm getting the following error on the old template:
The default target Entity Framework version requires the edmx schema version 2.0.0.0 or lower. The specified schema is version 3.0.0.0. To avoid this warning specify the target Entity Framework version explicitly. You can do this by using the EdmGen.exe command-line tool with the targetVersion option, or by including the targetEntityFrameworkVersion parameter when calling the GenerateCode method. 1 1
(although it looks like it's still working)
Ideas?
@Jon Miller: Both enums mapped to string values and nullable properties mapped to non nullable columns are features belonging to area of simple type mapping or mapped conversions. Unfortunately EF doesn't have this feature yet.
Updated to EF5 from June 2011 CTP and started to get "Sequence contains more than one element" exceptions thrown at navigation property configuration… Something with mappings maybe
Updated to EF5 from June 2011 CTP and now any attempt to query database results in "Sequence contains more than one element" exception thrown at navigation property configuration… Something with mappings maybe
@Diego B Vega: First of all, you guys do great work! You mention though the TVF walkthrough contains some links for workarounds for Code First in the first few paragraphs. I only see stored procedures mentioned in those links, not TVFs. The main thing about using TVFs is that they are composable. I don't think those workarounds are composable, right? Therefore they are not workarounds for using TVFs with Code First. Can we expect a proper TVF solution for Code First for EF 5.0 RTM instead of workarounds? Please also have a look at code.msdn.microsoft.com/Recursive-or-hierarchical-bf43a96e for one of my workarounds where I would like to slot in TVFs. Many thanks, Remco
@Remco Blok: Thanks for the link for the recursive query workaround.
You can use the SqlQuery method to invoke a TVF the same way you would execute any arbitrary SQL query with it. You cannot compose on top of the results of SqlQuery (basically an IEnumerable<T>) using LINQ to Entities, however you can compose the TVF using SQL within the text query you pass to SqlQuery.
Adding support for mapping functions and stored procedures using Code First, e.g. to enable using TVFs in LINQ queries or updating an entity using a stored procedure is pretty high in our prioritized backlog, but we are not planning to include the feature in EF 5.0 RTM.
@Jon Miller2, @Ladislav Mrnka: Agreed that mapping string columns to enums is a relatively common thing to want to do, and Ladislav is right that it is not supported in EF 5.0 and that the way we would like to support this in the future is to support more general property transformations in the mapping.
I am a little surprised to hear you can't map a nullable property to a non-nullable column though. In general we don't block on nullability mismatches. Could you please send an example of what you are seeing? You can use the "Email blog author" link in this page to contact us. We will pick it up from there.
What kind of TPT enhancements can be expected when running 4.3.1 on the .net 4.5 beta?
@Diego B Vega. Thanks for your response. I'm trying to think here, EF 5.0 cannot RTM before .Net 4.5 RTMs, which cannot RTM before Windows 8 RTM's, which is expected by … Q4 2012? And then sometime after that we'll see TVF support in Code First…which takes us into .. 2013? I'll have to exercise patience 😉 The reason why I want to use LINQ instead of SQL is to be database agnostic, so that I can use either a MS SQL Server provider or an Oracle provider, but only write my LINQ once. See the discussion here: social.msdn.microsoft.com/…/c81dfd60-ede5-4873-9f4d-04e240c293c2. Anyway, keep up the good work EF Team!
@Remco Blok: I don’t actually have the dates for RTM, but I understand the pain of having to wait for a feature you need. Although I cannot promise much, we are working on taking the EF stack out-of-band completely so that we can release more often. Thanks for the link.
I really don't want that, but it seems like the old CTP 5 bug is back. If an entity has more than one many-to-many relationship, EF breaks. Just reproduced it on the simplest scenario with 3 entities.
Does DBContext and Generate code from model work with this release?
I'm pulling my hair getting it running in my current set up(Windows 8, VS11 Dev Preview)
Versioning… it's not rocket science you know.
"Microsoft.VisualStudio.Shell.10.0, Version=11.0.0.0"
Can anyone else confirm (or even better disprove) that having multiple many-to-many relationships within an entity in EF5 results in crashes?
In the Compatibility section of EF5, you say: 'EF 5 will work with Visual Studio 2010'. But if all the new features are available if you target .NET 4.5 and use Visual Studio 11, what's the point in using Visual Studio 2010?
Or the performance enhancements are available for VS2010 and .NET 4.0 with EF5?
@Pablo Barragan, I did a test, when I install EF5 on .NET 4 VS2010, it references a EntityFramework.dll v4.3.1
@Viktar I just wrote a little app with two many-to-many relationships and it worked as expected. Could you use the "Email blog author" link and send us a repro showing how it fails for you?
@Pablo Feel free to continue to use EF 4.3.1 when targeting .NET 4. There is no real advantage to using EF5 on .NET 4, but we didn't want it to fail if you do want to use EF5 on .NET 4.
@Diego B Vega
The issue that I'm running into with attempting to set a DateTime property to nullable when it is a NOT NULL in the database column is really easy to reproduce. I'm guessing the problem may only occur if you are doing database first development. To reproduce the problem, create a table in SQL Server and set it's data type to DATETIME and set it to NOT NULL. Then, create a new EDM and import the table. Click on the DateTime field in the designer. In the Properties window, Nullable will be set to False. If you change it to either True or (None), Visual Studio gives you the following error.
Error 3031: Problem in mapping fragments starting at line 38:Non-nullable column Test.Date in table Test is mapped to a nullable entity property.
I'm guessing maybe if I was doing model first or code first development that the problem might not happen?
@Ladislav Mrnka
I agree with what you are saying about type converters. I think it would be great if EF had a generalized way of dealing with it. I used to do a lot of programming with JavaServer faces where they had "converters" like that. Also, WPF has ValueConverters. I always liked this and wished that ASP.NET had it.
@Diego B Vega: So Code-First is *still* not a first-class citizen of the EF world?
I'm quite happy to *create* the TVFs in the database, but if I can't *use* them from EF/CF, then it's not really a viable solution for any real-world project.
@Ladislav Mrnka – We don’t have a roadmap for features just yet. We’re in planning stage at the moment and mostly focused on how we move more of the Entity Framework code out of the .NET Framework and into the NuGet package.
@lynn eriksen – The improvements are in the queries that we generate, mainly around replacing UNION with LEFT OUTER JOIN.
@OakNinja – Yes, this post walks through how to generate DbContext code from an edmx based model. blogs.msdn.com/…/ef-4-2-model-amp-database-first-walkthrough.aspx
@Mike – Yeah, the issues we are hitting are technical ones in NuGet. We are one of the first teams to be releasing on NuGet that have different assemblies for .NET 4.0 and .NET 4.5, this makes the Package Manager Console based tooling hard because the ‘tools’ folder in NuGet isn’t setup for multi-targeting yet. We’re working on a temporary fix and also working with the NuGet folks to get native support for this scenario.
Also, when updating to 5.00-beta1, I got the following line in the package installed console:
Failed to generate binding redirects for PROJECTNAME. 'object' does not contain a definition for 'References'
@Pablo Barragan & @Felipe Fujiy – Just to add to what Arthur said – The EF5 bits on .NET 4.0 are the same as what we shipped in EF4.3.1. This may change as we move through the releases and towards an RTM of EF 5. We aren’t planning to add any new features that will be available on .NET 4.0 but we may make bug fixes etc.
Just noticed something… When creating a new MVC 4 application in VS 11 beta (which includes EF 4.3.1, I believe) the default connection string goes to localdb. However, as soon as I install the EF 5 beta, some config is added to my Web.config file that sets it back to Sql Express. I assume the package does this to support .NET 4.0 and VS2010. Is there a any way you can detect the framework version being used and not add this stuff for .NET 4.5 so it will continue to use localdb?
In any case, thanks so much for your great work on this. I'm really appreciative of the massively increased release velocity that these out-of-band releases allow.
@Brian Sullivan – The setting in code will actually win over the config file setting. In the config file we register SQLEXPRESS if present and LocalDb if not, I assume your machine has a SQLEXPRESS instance which is why we are setting that as the default. The line of code MVC4 puts in global.asax actually has a bug (missing a slash in the server name), which is easy enough to fix… but we recommend removing it, upgrading to EF4.3.1 or 5.0.0-beta1 and setting LocalDb as the default in web.config. The problem with setting it in global.asax is that design time tools (such as Migrations) have no idea this line of code exists, so they will fall back to using SQLEXPRESS. The next release of MVC4 is moving to the 4.3.1 package and will use web.config rather than global.asax to set the deafult.
"The context cannot be used while the model is being created"
EF5..
how to fix?
@Leandro This happens when the context is used inside a call to OnModelCreating. It's not possible to use the context for querying, updates, etc inside OnModelCreating because EF needs a model to be able to do these things. OnModelCreating is part of the process used to create this model and hence you cannot do these things until after OnModelCreating has completed and the model has been created.
@Rowan Miller It would be great if you could include the perfromance improvements in a future release for .NET 4.0. I was really excited about these improvements
I'm not running anything inside the "OnModelBuilder"!
Also already tried without the "OnModelCreating" and failed.
OnModelCreating*
It is extremely depressing the there still is no support for TVF in Code First.
Hey Rowan,
I'm getting ready to publish modified versions of the EF4x and EF5x DbContext T4 templates that include support for DataAnnotations and IntelliSense code comments, derived from the EDMX file. I love the new type support in EF5, but I was wondering if it would be possible to add support for the <Documentation> tag in the designer, for both the Enum itself, and it's members? I've confirmed that they work in the XML, but it would be nice to be able to edit them in the UI like the other EF objects as well.
Thanks!
Robert McLaws
twitter.com/robertmclaws
@Leandro Could you use the "email blog author" link and send us a repro?
@Robert I will add your request about being able to edit documentation for enum types and members to our backlog
"We are seeing a lot of great Entity Framework questions (and answers) from the community on Stack Overflow."
One of the best statements I've ever seen from Microsoft!
@Leandro: Check this: stackoverflow.com/…/how-can-i-prevent-ef-the-context-cannot-be-used-while-the-model-is-being-create I'm not sure if this problem still exists in newer versions but previously this could happen if two context were used in the same time (by multiple threads) without previous initialization of the DbModel.
The problem was that he was showing the error message: The context can not be used while the model is created being wellness
When in fact the error was the same as was reported in: Known Issues
Can disregard the email I sent with the error.
thanks for the support
@Jon Miller: I started a suggestion on UserVoice – you can vote for it if you think this is important: data.uservoice.com/…/2639292-support-for-simple-type-mapping-or-mapped-type-con
I keep getting this error
Could not load type 'System.ComponentModel.DataAnnotations.DatabaseGeneratedAttribute' from assembly 'EntityFramework, Version=5.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089'.
I'm using win8 consumer preview, vs11 beta and ef 5.0.
@Ivan: EF 5.0 is a new major version and contains breaking changes, so you will need to make changes to your 4.x program and recompile. One of those changes is that some of the data annotation attributes that were included in EntityFramemowrk.dll 4.x moved to System.ComponentModel.DataAnnotations.dll in .NET 4.5. This attribute in particular moved to the System.ComponentModel.DataAnnotations.Schema namespace, so you'll need at least to add a using statement for that.
@Diego: I didn't even use this attribute (or any other). I created a new asp.net mvc 4 application, updated ef to 5.0beta, and scaffolded controller, views and dbcontext. When I run it, I get that exception at runtime. I added the using statement to my model, as you suggested, but the error persists. Thoughts?
@Ivan: In that case I am not sure what is going on. Would it be possible for you to send us a repro in a zip file? You can use the "email blog author" link in this page and we will reply with an email address. Thanks a lot in advance.
F# project with "Install-Package EntityFramework -IncludePrerelease" gave some errors…
In my solution, use Solution Folder. when run Add-Migration throw exception. I finally found if move the project out of the folder. it will work fine.
It seems [DisplayFormat(ConvertEmptyStringToNull = false)] doesn't working in the new release 4.3.1!
I have a class definition:
public class Person
{
public int Id { get; set; }
[Required]
public string Name { get; set; }
[Required]
[DisplayFormat(ConvertEmptyStringToNull = false)]
public string Description { get; set; }
}
When try add new Person with empty Description, validation exception occurred:
var person = new Person {Name="Tester", Description="" };
But in EF4.1, there is no problem with ConvertEmptyStringToNull setting . Please help! Thanks!
Hello Team,
I wonder how I can check which "version" of the current migration.
And how to remove the history of the project so that you can make a new "Add-Migration" from the beginning.
@Leandro C. Guimarães
1.I view the version through the history table.
2. roll back Update-Migration -targetmigration. then delete the migration and re set-up again.
this is my way.
As reported in an earlier comment, we are also getting an exception with EF5 beta 1 the “Sequence contains more than one element” exception.
@Diego, I see from your post here twitter.com that you are aware of this problem. Could you give any more info on the cause of it, whether there are any workarounds, and when you plan to release a fix?
There are more details on the exact exception I am getting here:
stackoverflow.com/…/ef-5-beta-1-code-first-sequence-contains-more-than-one-element
We have a large solution which uses EF Code First, we can’t wait to try out the performance improvements so I’m very keen to get past this exception.
Has any progress be made on the "circular reference error when returning a serialized object" bug?Basically, the issue is that a EF class (such as from Code First) with a virtual ICollection property will throw a "circular reference" when serialized. A [ScriptIgnore] attribute should stop the problem from happening but seems to be ignored.
With the current effort made to simplify service access with the Web API etc. this would seem to require attention. Any possibility this is going to be addressed for 5.0?
Here are links describing the problem with some way to get around it:
stackoverflow.com/…/how-did-i-solve-the-json-serializing-circular-reference-error
stackoverflow.com/…/circular-reference-exception-with-json-serialisation-with-mvc3-and-ef4-ctp5w
BTW. Good news about the DataAnnotations moving out of the EntityFramework.dll !
@Viktar, @Paul2zl,
This is a known bug in EF5 Beta 1. We are going to fix this in Beta 2, which will be dropping within the next couple of weeks.
The bug only affects Independent Association (associations where the FK does not exist in your CLR classes) so you can workaround by switching to FK associations.
Apologies for the inconvenience.
Cheers,
Andrew.
@Khaled – TVF (and SPROC) support for Code First are absolutely on our backlog, but they just didn’t make it into this release. We use http://ef.mswish.net to help with prioritization so please be sure to vote for the features you want to see.
@Tuomas Hietanen – Can you start up a Stack Overflow thread with the exact errors you are seeing.
@Henry Zhou – Entity Framework doesn’t process ConvertEmptyStringToNull, if you have a UI layer that takes care of replacing null with an empty string that will keep EF validation happy, but EF won’t do this for you. You could override SaveChanges on your context and add logic to take care of this.
@Willc – The best option at the moment is still to disable proxy creation. We are going to take a look at what we can do in EF to solve this problem in the next version, but not in EF 5.
Um… screenshots of… console commands? So much for copying and pasting…
Um…and this bug? fixed?
http://www.morgia.info/…/Entity-Framework-EntityFunctionsCreateDateTime-and-Leap-Year.aspx
Will EF 5 (EF designer in VS11) support entity model devided by several files to improve parallel work of many developers and to decrease number of conflicts (during merge) caused by parallel model changing of edmx file?
@ryuuseki – Fair point, we’ll use text in the future 🙂
@Rwing – Our team is looking at that bug at the moment, I’ll get back to you with the outcome.
@Alexey – EF5 supports multiple diagrams but those diagrams still target a single EDMX file. Multiple model files isn’t something we are planning to support in EF5. Please vote for the feature on our wishlist http://ef.mswish.net, we use this site when prioritizing features for the next release.
@Rwing – Diego, from our team, has followed up on the blog post.
It looks like the issue when using an abstract base class in a TPT inheritance model has not been resolved.
Is this going to be fixed in the release?
See blogs.msdn.com/…/announcing-the-microsoft-entity-framework-june-2011-ctp.aspx
and thedatafarm.com/…/entity-framework-june-2011-ctp-tpt-inheritance-query-improvements
A few questions about EF 5 — since I am die-ing for access the the Geography data types in EF.
1. Will EF5 work in VS 11 only?
2. If so, I guess we are some time away from ready-for-prime-time release. If not, when might we go to RTM?
–mike
Working on VS 11 Beta I keep getting the error described in the linked stackoverflow post.
Creating a new project installing EF from the package manager console and all works fine.
A soon as I upgrade to EF 5 beta project throws following error when trying to savechanges.
Void System.Data.Objects.ObjectContextOptions.set_UseConsistentNullReferenceBehavior(Boolean)
link: stackoverflow.com/…/can-anyone-spot-why-i-keep-getting-this-error-testing-the-ef-5-beta
@Drauka: I responded to your question on Stack Overflow. It looks like you are using the wrong EntityFramework.dll for your target framework.
@Coop – EF5 will work in VS 2010 and VS 11 (there is a bug in Beta 1 that prevents the Code First Migrations commands from being used in VS 2010). To use the spatial data types you need to be targeting .NET 4.5 though, so you’ll need VS11 for that.
We don’t have a date for RTM yet but we are working on a ‘go-live’ release before the RTM of VS11 is available.
@Arthur Unfortunately your suggestions did not solve the problem.
It turned out that the problem @Drauka was having resulted from the EF June CTP failing to uninstall correctly. The Stack Overflow thread linked above contains steps to resolve this.
Can we rename the Discriminator column across TPC and TPH yet? 🙁
stackoverflow.com/…/cannot-rename-discriminator-column-in-entity-framework-4-1-code-first-database
NuGet is down, how do I get EF without NuGet?
Can someone share a pointer on how to run EF against a DB hosted at third party (in my case WinHost)? I am getting an error: Model compatibility cannot be checked because the database does not contain model metadata. Model compatibility can only be checked for databases created using Code First or Code First Migrations.
Trouble with validation of empty string.
I have a required field for which empty string is allowed, but null is forbidden. I am getting a validation error on SaveChanges(), "namespace field is required".
How do I make EDM treat empty string as a valid value?
thanks. (There are a lot of posts that bing returns that are not useful.)
Since EF5 is .NET 4.5 only, you will be leaving many people behind, unless .NET 4.5 RTM will support Windows XP. There are many WPF applications out there still running on Windows XP.
@LarsM – NuGet did have a short outage that you experienced, the NuGet team does work to make this a high availability service. In the event of an outage, if you have installed the EntityFramework package before, you can get the .nupkg file from another project and host it in a local feed; docs.nuget.org/…/hosting-your-own-nuget-feeds
@Nikhil Singhal – Code First should just ‘trust you’ if you map to an existing database that wasn’t created by Code First. When are you hitting this error? It sounds like it is probably a bug. If you can use the ‘Email Blog Author’ link at the top right of this page to send us a full exception message and stack trace that would be great.
@mycall – EF5 will work on .NET 4.0. To get some of the new features you need to be targeting .NET 4.5 though.
@Pete Mack – That's the default behavior of Data Annotations and not specific to EF, you can change it using the AllowEmptyStrings parameter – [Required(AllowEmptyStrings = true)]
I added a new feature suggestion specifically for Code First support for TVF's here: data.uservoice.com/…/2686351-code-first-support-for-table-valued-functions.
The previous feature suggestion for TVF's had 226 votes when it was marked as completed by the EF team saying it will be included in .NET 4.5, but that excluded Code First support. Hopefully we can get those 226 votes again or more on the new feature suggestion I created specifically for Code First support.
Any news on when beta 2 will drop? I have run into the 'Sequence contains more than one element' bug (stackoverflow.com/…/whats-wrong-with-my-many-to-many-abstract-implementation-sequence-contains-mor) and I am anxious to move forward.
@Remco Blok – We’ll probably add TVF support when we add SPROC support, which is very near the top of our backlog now.
@C4702 – We’ve just wrapped up the code for Beta 2, looks like we’ll have it out in the next week (provided we don’t find any major issues with it).
Please publish a step-by-step recipe how to enhance an existing app with an object graph in memory by applying EF 5 code first. Most people I talk to want to apply Code First without reading Julie Lerman's books…
For example this is a European school:
Public MustInherit Class Person
Public Property Id As Integer
Public Property Name As String
Public Property FirstName As String
Private Shared mCount As Integer = 0 'count created objects into negative numbers to dedect PKs defined by the DB
Public ReadOnly Property Count As Integer
Get
Return mCount
End Get
End Property
Public Sub New(name As String, firstName As String)
Me.Id = mCount 'use count as Id
mCount -= 1 'we use negative integers to find out whether and when the DB generates the primary key
Me.Name = name
Me.FirstName = firstName
End Sub
End Class
Public Class Student
Inherits Person
Public Sub New(name As String, firstName As String)
MyBase.New(name, firstName)
End Sub
End Class
Public Class Teacher
Inherits Person
Public Sub New(name As String, firstName As String)
MyBase.New(name, firstName)
End Sub
End Class
and School class contains List(Of Teacher) and List(Of Students).
What IDs must be changed? How do the FluentAPI calls look like for TPH/TPT/TPC ? …
How do I load the EF 4.3.1 Debug Symbols / Source for debugging?
I am trying to step into an exception and I am having trouble loading the symbols to I can view some of the variable values to see where in my model the exception is occurring (appears to be building the dynamic proxy). How do I load the EF 4.3.1 Debug Symbols / Source for debugging?
It's in a winform test harness. System.Data.Entity.Edm.EdmProperty: Name: Name 'EquipmentPckgDesc' cannot be used in type 'WinForm.EquipmentPckgDesc'. Member names cannot be the same as their enclosing type.
@Johan Botha – The source code for Entity Framework currently isn’t published, which is required to be able to step in and debug. The error you pasted doesn’t seem to be related to EF though, sounds like there is a property with the same name as it’s containing class in your code.
My team and I have really struggled with using the Entity Framework with SQL Azure. I thought these things "would just work" together! Turns out, there are tons of transient faults that happen with SQL Azure and EF has no way to handle them. That is, unless you want to write some really ugly, cumbersome wrapper code which doesn't fully get the job done.
My feature request is now the #1 "Azure" tagged EF feature request. data.uservoice.com/…/2426525-automatically-perform-retry-logic-for-sql-azure
Is it possible we'll see this implemented anytime soon?
Thank you very much.
Urgent!
My code was working fine using EF 4.1. After upgrading to 4.3.1, it does not work anymore.
It always throws exception:
Method System.Data.Entity.Database.SetInitializer: type argument 'WcScadaWebApp.DAL.TurbineContext' violates the constraint of type parameter 'TContext'.
during calling below method.
protected void Application_Start()
{
AreaRegistration.RegisterAllAreas();
RegisterGlobalFilters(GlobalFilters.Filters);
RegisterRoutes(RouteTable.Routes);
Database.SetInitializer<TurbineContext>(new TurbineInitializer());
}
Could anyone please help me to figure out why?
@Matt – This feature isn't going to be in EF 5 but we are planning to do some SQL Azure related work in EF 6.
@Ren Jun – Do you have TurbineContext or TurbineInitializer defined in a separate project. If so it sounds like they may be referencing an older version of EF and you may need to upgrade the NuGet package in those project too. If that's not the problem then start up a thread on Stack Overflow and we'll take a look at it.
@Rowan Miller – (From Ren Jun) Thank you very much. That was the case as you said. It was fixed after updating reference to new EF in another project.
Hi there,
I have EF 4.3.1 installed using NuGet, but I can't see "EF 4.x DbContext Generator" in the "Add New Item" choices. Can anyone advise please?
Thanks
@Kevin – You'll need to look under the 'Online' tab to see the templates.
It appears that there may be a bug in EF 4.3.1 relating to how the indexes are created. Could you guys take a look at my question stackoverflow.com/…/unhandled-exception-after-upgrading-to-entity-framework-4-3-1 and possibly give us some insight into the changes that were made to the index generation procedure from 4.2 to 4.3? Thanks!
@Jeff, Thank you for reporting this. We will include the fix for this in a future release of EF. As a workaround, you can use Migrations to create your database and remove the redundant call to Index() on the PrivateMakeUpLessons table create code. I'll post more details on your StackOverflow question.
@Brice, Thanks for the quick follow-up. This blog is the reason I chose EF over all the other ORMs out there.
EF 5.0 doesn't support Silverlight 5 yet?
Install failed. Rolling back…
Install-Package : Could not install package 'EntityFramework 5.0.0-rc'. You are trying to install this package into a project that targets 'Silverlight,Version=v5.0', but the package does not contain a
ny assembly references that are compatible with that framework. For more information, contact the package author.
At line:1 char:16
+ Install-Package <<<< EntityFramework -IncludePrerelease
+ CategoryInfo : NotSpecified: (:) [Install-Package], InvalidOperationException
+ FullyQualifiedErrorId : NuGetCmdletUnhandledException,NuGet.PowerShell.Commands.InstallPackageCommand
@Anson, The Entity Framework is not supprted on the Silverlight runtime. However, our sister technology WCF Data Services is. msdn.microsoft.com/…/bb931106
@Jeff, just and update: the fix for the issue on duplicate indexes will be included in EF5 RTM.