这个问题有很多部分:
- 有没有真正支持使用 IoC 容器的 .NET 的 ORM?
- 如果没有,为什么不呢?
- 这不会迫使喜欢领域驱动设计的人(包括我)在领域模型中使用大量服务类,使所有领域对象都是纯数据结构而没有行为(不知道这是否真的很糟糕事情)或更糟的是使用方法或属性注入。
- 未来是否有支持 IoC 容器的方向。
这个问题有很多部分:
对于 NHibernate,是的,可以注入依赖项。但是对于实体框架,我不是 100% 确定的。
关于 NHibernate,在 SO 上已经有很多类似的问题了。
使用 Nhibernate (ASP.NET MVC + IOC) 将依赖项注入域模型类
总结这些答案,可以使用Interceptors将依赖项注入您的 POCO 。
对于实体框架,我了解 EF 4.0 及更高版本可能有可能,请参阅此博客文章。这种方法的主要缺点似乎是它不适用于延迟加载。