作者:彭嘉侑舒良 | 来源:互联网 | 2023-05-20 14:47
我希望能够在实体框架加载和实现它们之后(例如,作为查询的结果)将一些依赖项(通过使用IoC容器)注入到实体中.
可以通过挂钩ObjectMaterialized事件来实现,但我想知道是否没有更好的方法来实现这一点,因为我首先使用EF 6和代码.
有什么建议或想法吗?
谢谢
Riana
1> Steven..:
虽然实体框架可以配置为允许将依赖关系注入实体,但我认为可以肯定地说,普遍的共识(看看Jimmy Bogard,Mark Seemann和我的观点)是根本不这样做的.
对我来说,重点是实体,DTO和消息等类与服务类非常不同.实体,DTO和消息是包含运行时数据的短期对象,而服务包含行为,通常是长寿命并且只是处理运行时数据(例如实体).
但这并不意味着您不能将服务用于您的实体.正如Mark在此描述的那样,不让您的实体使用服务导致贫血领域模型.但这意味着实体不应该是对象图的一部分.
相反,如果您正在练习DDD,您的实体可以简单地接受您在实体上定义的域方法的依赖关系.这些依赖项可以由执行用例的命令处理程序提供.换句话说,依赖项被注入到命令处理程序的构造函数中,并且当调用实体的域方法时,命令处理程序将提供此方法所需的依赖项(通常只有一个或两个)到该方法(方法注入).