Database 实体框架代码首先添加来自其他项目的模型

Database 实体框架代码首先添加来自其他项目的模型,database,entity-framework,entity-framework-4.1,prism,code-first,Database,Entity Framework,Entity Framework 4.1,Prism,Code First,通常情况下,人们会编写模型类并创建一个DbContext,其中包含多个对应模型类的DbSet,以首先在EF代码中创建数据库 Prism库允许您创建模块。模块位于同一个解决方案中,但作为解决方案中的另一个项目,或者可能是来自另一个解决方案的DLL 我现在的问题是:例如,如果您有一个prism模块,一个具有自己的模型和DbSet定义的独立项目,该怎么办。 如何添加、注入或让EF从该模块中发现这些模型类和数据库集,并将它们添加到现有EF数据库中 假设某个外部人员使用自己的数据库模型和相应的数据库集定义

通常情况下,人们会编写模型类并创建一个DbContext,其中包含多个对应模型类的DbSet,以首先在EF代码中创建数据库

Prism库允许您创建模块。模块位于同一个解决方案中,但作为解决方案中的另一个项目,或者可能是来自另一个解决方案的DLL

我现在的问题是:例如,如果您有一个prism模块,一个具有自己的模型和DbSet定义的独立项目,该怎么办。 如何添加、注入或让EF从该模块中发现这些模型类和数据库集,并将它们添加到现有EF数据库中

假设某个外部人员使用自己的数据库模型和相应的数据库集定义在prism模块中编写插件。 如果此人将prism模块DLL放在程序目录中,那么启动时的核心应用程序通常如何知道prism模块中还有其他数据库集,如果它们还不存在的话,也需要在数据库中创建这些数据库集呢。如何添加它们

提前谢谢


有人能给我一个如何做的代码示例吗?我在考虑MEF属性[ImportMany]和[ExportMany],但我不确定这是否可行。

我最近遇到了这个问题,没有找到令人满意的解决方案

问题是,特别是如果您使用RIA服务,所有类都需要在编译时就位,以便visualstudio可以为您生成代码。我找到的唯一解决方法是继承,但我放弃了这个想法,因为它引入了很多问题,从而提高了效率。如果不使用抽象类,RIA服务甚至会复制继承结构。但是您仍然需要为您想要的每个实体创建一个基类,例如主模块中的CustomerBase->Customer:CustomerBase中的CustomerBase

详细信息:这是因为如果您想要外键,您必须对中的其他类有所了解,例如BillingModule中的Customer


如果您不喜欢继承方式,可以使用分部类定义在客户机上手动实现的接口,以便以后仅在存储库中公开此接口。我坚持了下来,现在我很高兴。但现在仍然是我希望的样子。

我最近遇到了这个问题,没有找到令人满意的解决方案

问题是,特别是如果您使用RIA服务,所有类都需要在编译时就位,以便visualstudio可以为您生成代码。我找到的唯一解决方法是继承,但我放弃了这个想法,因为它引入了很多问题,从而提高了效率。如果不使用抽象类,RIA服务甚至会复制继承结构。但是您仍然需要为您想要的每个实体创建一个基类,例如主模块中的CustomerBase->Customer:CustomerBase中的CustomerBase

详细信息:这是因为如果您想要外键,您必须对中的其他类有所了解,例如BillingModule中的Customer


如果您不喜欢继承方式,可以使用分部类定义在客户机上手动实现的接口,以便以后仅在存储库中公开此接口。我坚持了下来,现在我很高兴。现在仍然是我希望的方式。

hmmmm那么实际上你是说我的问题不能先用EF代码完成?hmmmm那么实际上你是说我的问题不能先用EF代码完成?