实体框架对象实现和依赖注入

Ria*_*ana 3 entity-framework ioc-container

我希望能够在实体框架加载和实现它们之后(例如,作为查询的结果)将一些依赖项(通过使用IoC容器)注入到实体中.

可以通过挂钩ObjectMaterialized事件来实现,但我想知道是否没有更好的方法来实现这一点,因为我首先使用EF 6和代码.

有什么建议或想法吗?

谢谢

Riana

Ste*_*ven 5

虽然实体框架可以配置为允许将依赖关系注入实体,但我认为可以肯定地说,普遍的共识(看看Jimmy Bogard,Mark Seemann的观点)是根本不这样做的.

对我来说,重点是实体,DTO和消息等类与服务类非常不同.实体,DTO和消息是包含运行时数据的短期对象,而服务包含行为,通常是长寿命并且只是处理运行时数据(例如实体).

但这并不意味着您不能将服务用于您的实体.正如Mark在描述的那样,不让您的实体使用服务导致贫血领域模型.但这意味着实体不应该是对象图的一部分.

相反,如果您正在练习DDD,您的实体可以简单地接受您在实体上定义的域方法的依赖关系.这些依赖项可以由执行用例的命令处理程序提供.换句话说,依赖项被注入到命令处理程序的构造函数中,并且当调用实体的域方法时,命令处理程序将提供此方法所需的依赖项(通常只有一个或两个)到该方法(方法注入).