通常情况下,人们会编写其模型类,并创建一个包含多个dbset的dbcontext到相应的模型类,以便首先在ef代码中创建数据库。
Prism库允许您创建模块。模块与解决方案中的另一个项目位于同一解决方案中,或者可能是另一个解决方案中的dll。
我现在的问题是:如果您有一个prism模块(一个独立的项目),它有自己的模型(和dbset定义),该怎么办?
如何从模型中添加或注入(或让EF发现)这些模型类和DBSET,并将它们添加到现有EF数据库中?
假设某个外部人员使用自己的数据库模型编写了一个插件(prism模块),当然还有相应的dbset定义。
如果该人在程序目录中删除了PRISM模块DLL,那么核心应用程序(在正常启动时)会知道,如果不存在数据库,还需要从数据库中创建其他的BSET模块。(如何添加?)
提前谢谢。
有人能给我一个如何做到这一点的代码示例吗?我在想MEF的属性[重要]和[输出许多],但我不确定这是否可行。
最佳答案
我最近遇到这个问题,没有找到满意的解决办法。
问题是,特别是如果您使用ria服务,则所有类都需要在编译时就位,以便visual studio可以为您生成代码。我找到的唯一解决方案是继承,但我放弃了这个想法,因为它引入了许多需要提高效率的问题。如果不使用抽象类,ria服务甚至会复制继承结构。但是你仍然需要一个基类来满足你想要的每个实体(例如,主模块中的customer base->customer:customerbase在customer module中)。
(详细信息:这是因为如果您想要外键,那么您必须了解billingmodule中的另一个类,例如customer)。
如果不喜欢继承方式,可以使用部分类定义在客户端上手动实现的接口(稍后仅在存储库中公开此接口)。我坚持了下来,现在我很高兴。但现在我仍然希望我是。
关于database - Entity Framework 代码首先添加其他项目中的模型,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/8597076/