我们有一个EF4 EDMX,其中包含约300个实体,这些实体在我们的核心产品套件中使用(从数据库导入的实体)。
当我们获得新客户时,他们往往希望存储额外信息,并让我们开发自定义流程,这些流程不属于我们的业务领域,而是完全自定义的。例如。我们与一家安全公司签订了合同,他们希望存储有关其安全级别的信息,并拥有符合这些级别的流程。
在每种情况下,我们都需要添加自定义表格和/或向现有实体添加自定义字段。我们有一个很好的方法可以使用先前的技术,其中核心类库没有使用自定义表等等。我们只是从自定义类库中的核心实体(与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);
}
}
虽然有一些显而易见的原因,但这并不理想。
非常感谢任何帮助。
答案 0 :(得分:0)
我认为对你帮助不大,但NHibernate可以很容易地做到这一点。我们有与您相同的场景,NH允许我们在没有任何问题的情况下对DLL进行建模。
很抱歉,这不是一个真正的答案,只是建议考虑其他人阅读此内容的替代方案。