我有一个包含多个数据库的解决方案。 我们正在使用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 =正在Code First模式中使用上下文,其中包含从EDMX文件生成的用于Database First或Model First开发的代码。这将无法正常工作。要解决此问题,请不要删除引发此异常的代码行。如果您希望使用Database First或Model First,请确保Entity Framework连接字符串包含在启动项目的app.config或web.config中。如果要创建自己的DbConnection,请确保它是EntityConnection而不是其他类型的DbConnection,并将其传递给采用DbConnection的基本DbContext构造函数之一。要了解有关Code First,Database First和Model First的更多信息,请参阅此处的实体框架文档:http://go.microsoft.com/fwlink/?LinkId=394715
堆栈跟踪: 在Arkle.DAL.EF.ArkleEntities.OnModelCreating(DbModelBuilder modelBuilder)
无论如何,在一个解决方案中,首先允许代码优先使用db吗?
答案 0 :(得分:0)
好的,深究这一点。 基本上,如果您在两个上下文之间共享连接,则这不起作用。 但是,如果您使用不同的连接,则可以正常工作。
感谢Ben Robinson指出我正确的方向。