我总是在所有地方插入我的Linq2SQL查询,几乎每个类都在这里.
我想知道你在哪里放置Linq2SQL查询的策略是什么?
您是将它们放在单独的数据层类中还是将它们存储在遍布各处的地方?
我认为我需要改变Linq2SQL查询的策略并将它们存储到单独的DataLayer类中.我认为,如果我能够有效地进行TDD并遵守依赖注入和固体原则,那是必须的.
我将所有LinqToSQL调用完全包装到一个DAL中.我的网站和业务层不了解我正在使用的持久性框架.这样,如果LinqToSql真的死了,或者如果我决定要使用一个全新的框架,我就不必追捕我调用DB的所有地方.
它还有助于可重用性.我可以在使用相同数据库的其他项目中使用相同的Business或DAL.
LINQ是一种语言结构.它需要的是你的DAL将你的实体暴露为IEnumerable或IQueryable,你可以使用LINQ来反对它.您的DAL可以基于LINQ2SQL或LINQ2Entities或您自己的自定义代码 - 只要它正确地公开您的实体.如果你使用LINQ2SQL,你会获得一些优势,例如延迟查询执行,但并不是绝对必要的.我认为避免在DAL之外使用LINQ没有意义.如果我想用基于LINQ2SQL的其他东西替换DAL,我可以.只要我维护基于LINQ的代码所期望的接口我就可以了.
编辑:我的底线是,直到他们达到DAL,他们不是LINQ2SQL查询,他们只是LINQ.LINQ不会从语言中消失,除非它被更好的东西取代.使它成为LINQ2SQL的原因是DAL是用LINQ2SQL实现的.我的其余代码不知道(或关心)这是如此.它可能是LINQ2Objects或LINQ2Entities或......