2012-07-05 62 views
0

我已经设置了我的项目以使用实体框架。这是数据库第一种方法。设置EF与Windsor Castle一起工作

对于IoC,我使用Castle Windsor,并且该项目设置为注入所有依赖关系。 我的问题是,是否需要为我的EF实体设置Castle来做同样的事情?我怎样才能做到这一点?

+0

任何想法,任何人? Plz帮助! – annantDev 2012-07-06 15:43:06

+0

你问你是否将你的道实体对象注册到城堡容器中?简短的回答是你不需要它,你为什么? – Eduard 2012-07-11 11:13:06

回答

0

有许多方法可以在Castle中使用Entity Framework。我建议你采用Unit of WorkRepository模式。 DbContext提供了工作单元的大部分功能,而DbSet同样提供了大部分存储库所需的功能。

您将遇到的主要问题是EF不理解模型对象的依赖注入。 EF在分配模型对象时总是使用空的构造函数,这意味着我们没有机会对模型对象进行依赖注入。我们已经通过使用对象物化勾上的DbContext解决此得到:

((IObjectContextAdapter)this).ObjectContext.ObjectMaterialized += EFObjectLoadInitializer; 

的EFObjectLoadInitializer然后注入内核到模型对象(我们所有的模型对象必须支持IInjectKernel接口)。在注入之后,内核被用来解决任何其他的依赖。它不是很干净,但它运行良好,并使我们能够利用我们与温莎建立的其他基础设施。