Entity framework 4 扩展核心Edmx,多个Edmx';EF4中的s

Entity framework 4 扩展核心Edmx,多个Edmx';EF4中的s,entity-framework-4,edmx,extending,inheritance,Entity Framework 4,Edmx,Extending,Inheritance,我们有一个EF4 EDMX,其中包含约300个实体,用于我们的核心产品套件(从数据库导入的实体) 当我们获得新客户时,他们往往希望存储额外的信息,并让我们开发业务领域之外的完全定制的定制流程。例如,我们与一家安全公司签订了一份合同,他们希望存储有关其安全级别的信息,并拥有在这些级别上起作用的流程 在任何情况下,我们都需要向现有实体添加自定义表和/或自定义字段。我们用以前的技术很好地做到了这一点,其中核心类库没有被自定义表等废弃。我们只是从自定义类库中的核心实体(等同于EF中的EntityObje

我们有一个EF4 EDMX,其中包含约300个实体,用于我们的核心产品套件(从数据库导入的实体)

当我们获得新客户时,他们往往希望存储额外的信息,并让我们开发业务领域之外的完全定制的定制流程。例如,我们与一家安全公司签订了一份合同,他们希望存储有关其安全级别的信息,并拥有在这些级别上起作用的流程

在任何情况下,我们都需要向现有实体添加自定义表和/或自定义字段。我们用以前的技术很好地做到了这一点,其中核心类库没有被自定义表等废弃。我们只是从自定义类库中的核心实体(等同于EF中的EntityObject)继承,并根据需要添加自定义

类似地,我们不想将这些自定义表和属性添加到核心EDMX中。我们希望在一个单独的类库中,在一个新的自定义EDMX中从核心EDMX中“继承”,在这个类库中我们可以添加自定义。继承将允许我们在核心EDMX中尽可能多做一些事情

我们使用t4模板根据这篇博文生成存储库(我们不使用模型优先的方法):

我们能按要求扩展EDMX吗

我们提出了一个黑客解决方案,即核心实体上的方法扩展,它在单独的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建模,而不会有任何问题

对不起,这不是一个答案,只是一个建议来考虑其他人的选择。