2010-12-14 105 views
3

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

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

在每种情况下,我们都需要添加自定义表格和/或向现有实体添加自定义字段。我们有一种很好的方式来处理以前的技术,在这种技术中,核心类库不会与自定义表格等混淆。我们只是从自定义类库中的核心实体(等同于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); 
    } 
    } 

这并不是虽然几个明显的原因理想。

任何帮助,非常感谢。

+0

你有没有找到办法做到这一点? – frabiacca 2011-03-19 00:56:21

回答

0

对我来说帮助不大,但NHibernate可以很容易地做到这一点。我们和你有相同的场景,NH允许我们在DLL中建模,没有任何问题。

对不起,没有一个真正的答案,只是建议考虑其他读者的替代方案。