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

时间:2015-02-25 09:58:22

标签: entity-framework ioc-container

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

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

任何建议或想法?

由于

Riana

1 个答案:

答案 0 :(得分:5)

虽然可以将实体框架配置为允许将依赖关系注入实体,但我认为可以安全地说出普遍的共识(看看Jimmy Bogard的意见,{{3} }和Mark Seemann)根本就不这样做。

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

但这并不意味着您无法将服务用于您的实体。正如Mark描述me,不让您的实体使用服务导致here。但这意味着实体不应该成为对象图的一部分。

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