我们有一个 EF4 EDMX,其中包含我们核心产品套件中使用的约 300 个实体(从数据库导入的实体)。
当我们获得新客户时,他们通常希望存储额外信息并让我们开发在我们的业务领域之外且完全自定义的自定义流程。例如。我们与一家安全公司签订了契约(Contract),他们希望存储有关其安全级别的信息,并拥有在这些级别上采取行动的流程。
在每种情况下,我们都需要添加自定义表格和/或向现有实体添加自定义字段。我们用以前的技术有一个很好的方法来做到这一点,其中核心类库没有与自定义表等混为一谈。我们只是从自定义类库中的核心实体(相当于 EF 中的 EntityObject)继承,并根据需要添加自定义。
同样,我们不想将这些自定义表和属性添加到我们的核心 EDMX。我们希望在一个单独的类库中的新自定义 EDMX 中从核心 EDMX 中“继承”,我们可以在其中添加自定义。继承将使我们能够在 Core EDMX 中做我们能做的一切,再加上更多。
我们正在使用 t4 模板根据这篇博文生成我们的存储库(我们没有使用模型优先方法):
我们可以根据需要扩展 EDMX 吗?
我们想出了一个 hackish 解决方案,一种对核心实体的方法扩展,它在单独的 EDMX 中返回自定义实体,如下所示:
public static class CoreEntityExtensions
{
public static EntityConnection EntityConnection;
public static CustomUserEntity CustomUserDetails(this User coreUser)
{
ICustomUserEntityRepository customUserRepository = new CustomUserEntityRepository(EntityConnection);
return customUserRepository.All().SingleOrDefault(u => u.id == coreUser.id);
}
}
尽管出于一些显而易见的原因,这并不理想。
非常感谢任何帮助。
最佳答案
我认为这对您帮助不大,但 NHibernate 可以很容易地做到这一点。我们有与您相同的场景,NH 允许我们毫无问题地跨 DLL 建模。
抱歉,这不是一个真正的答案,只是建议阅读本文的其他人考虑替代方案。
关于entity-framework-4 - 扩展 Core Edmx,EF4 中的多个 Edmx,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4445146/