我喜欢 LINQ to SQL,但一直困扰我的是,在使用它时,我的存储库代码由 LINQ to SQL 框架生成,因此与 SQL Server 数据库紧密耦合。
你们中是否有人以抽象、松散耦合的方式使用 LINQ to SQL?如果是,您是如何解决保持代码与数据库无关的问题的?
为了我自己;我很乐意重用 LINQ/dbml 生成的对象模型,因为实际上这些属性不会伤害我,并且任何其他实现都可以提供足够相似的模型 - 但我不使用我的数据上下文在 DAL 之外。所以我有类似的东西:
-
IFooRepository
- 使用生成的 dbml 对象和一些 POCO 模型类定义可用的方法
-
FooRepository
- 了解数据上下文的实现
我的存储库方法不公开 LINQ 概念,例如IQueryable<T>
and Expression<...>
,因为他们是抽象漏洞 http://www.joelonsoftware.com/articles/LeakyAbstractions.html;其他实现的工作方式会有所不同(例如,EF 支持两者的不同方面)。
此外,我已将大多数关联属性标记为内部属性,并且仅在 DAL 查询期间使用它们(在 OO 工作期间不使用它们)。
我可以映射到纯 POCO,但我没有看到好处。我对此还有一些想法:实用的LINQ http://marcgravell.blogspot.com/2009/02/pragmatic-linq.html.
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)