我们有一个应用程序,它使用实体框架4.1和DbContext API。该应用程序具有多个DbContexts 映射到不同的数据库和表。本周我们用Code first T4 templates for view generation为DbContext预先生成了视图,以节省启动时间,一切都很棒......直到我们需要使用第二个DbContext。那时,我们得到以下例外:
“EntityContainer'CodeFirstContainer'的映射和元数据信息不再与用于创建预生成视图的信息匹配。”
我们是否为一个或多个DbContexts生成了视图,我们得到了这个例外。
如何为多个DbContexts预生成视图并且仍然有一个有效的应用程序?
我在消息中查看了可疑的'CodeFirstContainer',发现它在两个Pre-Generated视图构造函数中,看起来像:
public ViewsForBaseEntitySetsCE5A4DE7E067A5879A835C5C494F186A390ADC2D26E82631FDC17C61E7E3D076
{
this.EdmEntityContainerName = "CodeFirstContainer";
this.StoreEntityContainerName = "CodeFirstDatabase";
this.HashOverMappingClosure = "198099ba4b299a8dc37402a5c4c65096d216c3ca5f3c1e6c796d33e723483d74";
this.HashOverAllExtentViews = "85be433ad451c345f4d8e92827653fd9203be3008dd387745798f939514a0b2f";
this.ViewCount = 14;
}
两个视图构造函数之间的唯一区别是最后3个属性。
或者,如果有人知道如何告诉EF不要为两个DbContexts使用CodeFirstContainer,那么我就能够自己更改生成视图或DbContext并使事情正常工作......除非这包含在哈希中。 / p>