我有一个包含多个数据库的解决方案。 我们正在使用 EF6。
我们有一个 EF6 项目(代码优先)和一个 EF6 DB 优先项目。
var arkleModelDbFist = new Arkle.DAL.EF.ArkleEntities();
var CustomerOld= new Arkle.DAL.EF.Customer();
arkleModelDbFist.Customers.Add(CustomerOld); // Errors on this line
arkleModelDbFist.SaveChanges();
var arkleModelCodeFirst = new ArkleEfModel();
var customer= new customer_ef(); // note we have renamed this so it won't conflict, even though it is in seperate project
arkleModelCodeFirst.Customers.Add(customer);
arkleModelCodeFirst.SaveChanges();
我们收到以下错误。
System.Data.Entity.Infrastructure.UnintentionalCodeFirstException 未处理
Message=上下文正在代码优先模式下使用,代码是从数据库优先或模型优先开发的 EDMX 文件生成的。这将无法正常工作。要解决此问题,请不要删除引发此异常的代码行。如果您希望使用数据库优先或模型优先,请确保 Entity Framework 连接字符串包含在启动项目的 app.config 或 web.config 中。如果您要创建自己的 DbConnection,请确保它是一个 EntityConnection 而不是其他类型的 DbConnection,并且您将它传递给采用 DbConnection 的基本 DbContext 构造函数之一。要了解有关代码优先、数据库优先和模型优先的更多信息,请参阅此处的 Entity Framework 文档:http://go.microsoft.com/fwlink/?LinkId=394715
堆栈跟踪: 在 Arkle.DAL.EF.ArkleEntities.OnModelCreating(DbModelBuilder modelBuilder)
有没有办法在一个解决方案中同时允许代码优先和数据库优先?
最佳答案
好的,深入了解这个问题。 基本上,如果您在两个上下文中共享一个连接,这是行不通的。 但是,如果您对两者使用不同的连接,则它会起作用。
感谢 Ben Robinson 为我指明了正确的方向。
关于c# - 具有一个 EF6 模型(数据库优先)和一个代码优先的解决方案,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27551453/