C# 我应该如何使用IoC/依赖项注入处理实体/域对象?

C# 我应该如何使用IoC/依赖项注入处理实体/域对象?,c#,linq-to-sql,dependency-injection,C#,Linq To Sql,Dependency Injection,我目前正在使用PLINQO从数据库生成我的所有实体 最近,我开始使用StructureMap使用依赖注入,作为“分离关注点”学习过程的一部分。我注意到所有生成的实体类都包含使用EntitySet(LINQ的一部分)的高度耦合属性,这使得我的实体依赖于使用System.Data.LINQ 我希望继续使用PLINQO生成的实体,但同时,我觉得我可能应该生成某种基类/仅数据对象,甚至可能将它们移动到不同的部件中,然后根据需要使用某种自动映射器在两者之间进行转换。在最好的情况下(或者最坏的情况下,取决于

我目前正在使用PLINQO从数据库生成我的所有实体

最近,我开始使用StructureMap使用依赖注入,作为“分离关注点”学习过程的一部分。我注意到所有生成的实体类都包含使用EntitySet(LINQ的一部分)的高度耦合属性,这使得我的实体依赖于使用System.Data.LINQ

我希望继续使用PLINQO生成的实体,但同时,我觉得我可能应该生成某种基类/仅数据对象,甚至可能将它们移动到不同的部件中,然后根据需要使用某种自动映射器在两者之间进行转换。在最好的情况下(或者最坏的情况下,取决于您如何看待它),我希望有一些接口来表示这些,以便稍后我可以将它们注入不同的具体类型

这是不是太过分了?最终,我将从直接使用SQL Server转向使用Web服务,我怀疑这些EntitySet是否会那么容易地跨越网络

有没有人有这样的场景的好例子


TIA

我认为您的思路是正确的-不要让生成的L2S类的名称欺骗您。它们不是DDD术语中的实体,只是数据库的强类型表示。如果你问我,这是一个不应该被允许侵入域层的实现细节

在currect.NET框架中,如果您只使用BCL而不使用额外的库,那么您唯一的选择就是在域模型中定义持久的无知实体,然后将它们映射到数据访问层中的L2S类。这是一种痛苦,但在这方面是有帮助的

如果你愿意稍微偏离纯粹的BCL,那么有一些开源库提供持久性知识,比如——我个人对NHibernate没有任何经验,但很多聪明人都很看重它

在.NET4.0中,实体框架,从而LINQ到实体


杰里米·米勒有一个问题。

谢谢你的澄清。我很高兴我在这里似乎走对了方向。另外,感谢你给AutoMapper的链接,我一直在考虑写我自己的,但没有意识到CodePlex上有一个开源项目。