我想为EF
中的实体自定义映射例如,我有一个实体:
public class User
{
public int UserId { get;set;}
public string Firstname { get;set;}
public string ColA {get; set;}
public string ColB {get; set;}
}
已经在常用的EF中添加了OnModelCreating()中的映射。如果我在2个单独的程序集中有2个函数,请调用AssemblyA.dll和AssemblyB.dll,它们由MEF框架动态加载。
AssemblyA.dll只需要ColA并且必须为AssemblyB.dll删除ColB,反之亦然,所以我需要为这两个服务定义2个新的映射类,它将根据其程序集动态运行以删除列(AssemblyA将忽略ColB,而AssemblyB忽略ColA)。我不想修改当前EF的代码,因为它已经在生产中。每个程序集的所有更改都应该是自己的。
EF支持我们这样做吗?或者你可以给我指点。
答案 0 :(得分:0)
目前还不是很清楚你想做什么,但是:
OnModelCreating
内构建EF映射,因为该方法通常仅在整个应用程序生命周期内调用一次。DbModel
insnaces,将它们编译为DbCompiledModel
并将它们传递给DbContext
构造函数 - 这应该允许您为AssemblyA和AssemblyB提供两种不同的映射配置但是你永远不会在同一个上下文实例中同时拥有它们。无论如何,如果您使用MEF和模块化架构,每个实体应该是核心(与任何特定模块无关,并且在模块之间共享)或模块(不被任何其他模块或核心使用)。