5

我已经搜索,但没有发现太多的话题。有没有人看到DBContext的一个简洁的“操作顺序”,包括像实例化,验证,保存等东西?我主要好奇,因为在我的EF 4.3 Code First上下文中使用LINQPad时,它会在我自己的EF 4.3之前运行两个查询。其中一个与迁移历史有关,我知道这是因为我们使用EF Migrations,它试图查看它是否需要自动更新,另一个是针对EdmMetadata表,我不明白,因为它听起来像是如果我们使用EFMigrations,则不需要。EF Code First 4.3 DbContext生命周期?

我不明白为什么要调用一个查询,这让我想知道是否还有其他部分的DBContext生命周期,我不知道这可能对理解/覆盖有用。提前致谢!

+0

(抱歉我的英语不好)以下是一些信息:http://blog.oneunicorn.com/2012/01/13/ef-4-3-beta-1-what-happened-to-that-edmmetadata -table /,EF 4.3具有使用EdmMetadata测试模型兼容性的能力 - 尽管如您所说,如果您正在使用Migrations,它可能根本不应该使用它。但我更好奇你是如何得到linqpad与EF 4.3一起工作的......当我尝试打开我的上下文程序集时出现“无法加载EntityFramework 4.1”错误:( – Leo 2012-02-24 17:01:29

+0

我认为它只能在最新版本LINQPad的测试版 – Ocelot20 2012-02-24 17:18:35

+0

我认为这就是我正在使用的版本4.38.03 ...可以肯定的是,您是否使用EntityFramework 4.3.0.0编译项目? – Leo 2012-02-24 18:53:20

回答

0

对EdmMetadata的查询是出于兼容性原因。 EF 4.1没有迁移。为了能够确定模型是否更改,使用了EdmMetadata表。假设您使用EF 4.1应用程序开发了一个应用程序,并且您已移至EF 4.3,但未更改该模型。在这种情况下,不需要运行迁移,抛出异常或触摸数据库,因为你的模型没有改变。对EdmMetadata表的调用只是为了能够正常处理这种情况,并避免在不需要时抛出或触摸数据库。 我不认为EF 4.3中有这种类型的其他变化。