将我们的项目从使用entity framework5升级到entity framework6(尽pipeNuGets更新函数)后,我在我生成的实体类上得到以下错误: 错误1名称空间“System.Data”中不存在types或名称空间名称“对象” (你是否缺less程序集引用?) 我知道这是因为命名空间已经改变,我可以通过改变我的导入来手动修复错误: using System.Data.Objects; 并using System.Data.Objects.DataClasses; 要: using System.Data.Entity.Core.Objects; 然而,该文件生成,所以我需要重新应用此修复程序后, Update model from Database每个Update model from Database 。 有没有什么额外的改变,让EF生成没有这个错误的模型。
我试图用SQLite的entity framework。 我有问题集成到我的主要应用程序,所以我从头开始一个小testing,完全按照http://brice-lambson.blogspot.com/2012/10/entity-framework-on-sqlite.html 毕竟说完了,运行项目时出现以下错误: 找不到名称为“System.Data.SQLite”的ADO.NET提供程序的entity framework提供程序。 确保提供程序在应用程序configuration文件的“entityFramework”部分中注册。 有关更多信息,请参阅http://go.microsoft.com/fwlink/?LinkId=260882 。 我的app.config如下所示: <?xml version="1.0" encoding="utf-8"?> <configuration> <configSections> <section name="entityFramework" type="System.Data.Entity.Internal.ConfigFile.EntityFrameworkSection, EntityFramework, Version=6.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" requirePermission="false" /> <!– For more information on Entity Framework configuration, visit http://go.microsoft.com/fwlink/?LinkID=237468 –> </configSections> <entityFramework> <defaultConnectionFactory type="System.Data.Entity.Infrastructure.SqlConnectionFactory, EntityFramework" /> <providers> <provider invariantName="System.Data.SqlClient" type="System.Data.Entity.SqlServer.SqlProviderServices, EntityFramework.SqlServer" /> </providers> </entityFramework> <system.data> <DbProviderFactories> <add name="SQLite Data Provider" […]
我的项目中有多个类(包括TPT)。 每个POCO都有一个BaseClass ,它有一个GUID (称为GlobalKey )作为主键。 首先我使用DataAnnotations来创build正确的外键。 但是,我有问题同步相应的GUID与对象本身。 现在我只想要一个虚拟导航属性,以便数据库中的GUID字段由NamingConvention创build。 但字段名称总是加上一个下划线,后面跟着GlobalKey (这是正确的)。 当我想删除下划线时,我不想通过stream畅API中的所有POCO来执行此操作: // Remove underscore from Navigation-Field modelBuilder.Entity<Person>() .HasOptional(x => x.Address) .WithMany() .Map(a => a.MapKey("AddressGlobalKey")); 任何想法通过覆盖一个约定为所有POCOS做这个? 提前致谢。 安德烈亚斯
System.Transactions.TransactionScope和EF6的Database.BeginTransaction什么区别? 有人可以举一个小例子,或只是解释清楚使用哪一个? PS:在我的项目中,我正在使用EF6。 我已经阅读了文档,但没有多大帮助。 还查了一些例子,但是他们使用的是SqlConnection.BeginTransaction ,现在MS已经在EF6中引入了这个新的Database.BeginTransaction 。
我已经阅读了很多关于在Entity Framework中保存分离实体的文章。 他们都似乎适用于旧版本的entity framework。 他们引用的方法,如ApplyCurrentValues和ChangeObjectState似乎并不存在。 一时兴起,我决定尝试一种我通过intellisensefind的方法,我想确保这是做这件事的正确方法,因为我不明白幕后发生了什么: public void SaveOrder(Order order) { using (VirtualWebEntities db = new VirtualWebEntities()) { db.Orders.Attach(order); db.Entry(order).State = System.Data.Entity.EntityState.Modified; db.SaveChanges(); } } 这是更新已更改的现有项目的正确方法吗?
用EF6你有一个新的交易,可以像这样使用: using (var context = new PostEntityContainer()) { using (var dbcxtransaction = context.Database.BeginTransaction()) { try { PostInformation NewPost = new PostInformation() { PostId = 101, Content = "This is my first Post related to Entity Model", Title = "Transaction in EF 6 beta" }; context.Post_Details.Add(NewPost); context.SaveChanges(); PostAdditionalInformation PostInformation = new PostAdditionalInformation() { PostId = (101), […]
当我在一个独立的场景,并从我映射到一个实体来保存它的客户端得到一个dto我这样做: context.Entry(entity).State = EntityState.Modified; context.SaveChanges(); 那么什么是DbSet.Attach(entity) 或者为什么当EntityState.Modified已经附加实体时应该使用.Attach方法?
有没有办法find在entity framework中是否存在未保存的更改?
具有long数据types的类属性在添加新迁移(代码优先)时正确映射,但是mysql的EF提供程序跳过了ulong数据types。 如何映射一个属性来使用mysql的unsigned bigint ?
我正在尝试使用EF6更新logging。 首先findlogging,如果存在,则更新它。 这是我的代码: var book = new Model.Book { BookNumber = _book.BookNumber, BookName = _book.BookName, BookTitle = _book.BookTitle, }; using (var db = new MyContextDB()) { var result = db.Books.SingleOrDefault(b => b.BookNumber == bookNumber); if (result != null) { try { db.Books.Attach(book); db.Entry(book).State = EntityState.Modified; db.SaveChanges(); } catch (Exception ex) { throw; } } } […]