假设您有三个层(商业,数据和 UI )。我的数据层将有一个linq to sql
文件,其中添加了所有表。
我见过一些示例,其中在业务层中创建了一个接口,然后在另一个类(类型为IQueryable / IEnumerable)中实现,而其他类正在使用普通{{1} } 获取/保存/删除/更新数据。
为什么以及何时使用具有Linq syntax
类型的接口?
答案 0 :(得分:0)
您可能想要执行此操作的两种最常见情况是:
例如,您有一个直接与LINQ to SQL对话的业务层。将来你需要使用nHibernate或Entity Framework。进行此更改会影响您的业务层,这可能不太好。
相反,如果您已编程到接口(比如IDataRepository),您应该能够交换进出具体的实现,如LINQtoSQLRepository或HibernateRepository,而无需更改业务层 - 它只关心它可以调用,比如Add (),Update(),Get(),Delete()等 - 但不关心这些操作是如何实际完成的。
对接口进行编程对于单元测试也非常有用。您不希望出于各种原因(例如速度和可靠性)对数据库服务器运行测试。因此,您可以传入测试double,fake或mock实现来测试数据层。例如。你有一些实现你的IDataRepository的测试数据,允许你在没有数据库连接的情况下从你的业务层测试add(),delete()等。
这些要点通常是应用程序各方面的良好实践。我建议阅读The Repository Pattern,SOLID原则,甚至是测试驱动开发。这是一个很大的,有时很复杂的区域,很难详细解答准确做什么以及什么时候需要适合你的场景。
我希望这可以帮助你开始。