扩展Core Edmx,EF4中的多个Edmx

时间:2010-12-14 22:59:52

标签: entity-framework-4 edmx extending inheritance

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

当我们获得新客户时,他们往往希望存储额外信息,并让我们开发自定义流程,这些流程不属于我们的业务领域,而是完全自定义的。例如。我们与一家安全公司签订了合同,他们希望存储有关其安全级别的信息,并拥有符合这些级别的流程。

在每种情况下,我们都需要添加自定义表格和/或向现有实体添加自定义字段。我们有一个很好的方法可以使用先前的技术,其中核心类库没有使用自定义表等等。我们只是从自定义类库中的核心实体(与EF中的EntityObject等效)继承,并根据需要添加了自定义。

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

我们正在使用t4模板根据此博客帖子生成我们的存储库(我们不使用模型优先方法):

http://geekswithblogs.net/danemorgridge/archive/2010/06/28/entity-framework-repository-amp-unit-of-work-t4-template-on.aspx

我们可以按照我们的要求扩展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);
    }
  }

虽然有一些显而易见的原因,但这并不理想。

非常感谢任何帮助。

1 个答案:

答案 0 :(得分:0)

我认为对你帮助不大,但NHibernate可以很容易地做到这一点。我们有与您相同的场景,NH允许我们在没有任何问题的情况下对DLL进行建模。

很抱歉,这不是一个真正的答案,只是建议考虑其他人阅读此内容的替代方案。