【发布时间】:2013-08-22 03:48:07
【问题描述】:
我现在在 Visual Studio 解决方案中有多个 C# 项目,它们都将使用相同的 SQL Server 数据库。
在项目之间共享 LINQ-to-SQL 类的正确方法是什么?
我正在考虑将dmbl 文件复制到每个项目中,但我认为这可能太多余了。有没有更好的方法来解决这个问题?
【问题讨论】:
标签: c# visual-studio linq-to-sql projects-and-solutions
我现在在 Visual Studio 解决方案中有多个 C# 项目,它们都将使用相同的 SQL Server 数据库。
在项目之间共享 LINQ-to-SQL 类的正确方法是什么?
我正在考虑将dmbl 文件复制到每个项目中,但我认为这可能太多余了。有没有更好的方法来解决这个问题?
【问题讨论】:
标签: c# visual-studio linq-to-sql projects-and-solutions
我想您需要在项目之间共享数据库访问代码,而不是像它们一样的 linq-2-sql 类。
构建数据访问库 (DAL),公开操作通过 linq-2-sql 类而不是公开类实现的数据库。
我建议使用Repository Pattern
从您想要的项目中引用 DAL 库。
【讨论】:
您可以:将其构建为类库并包含它。它只是一个类,对吧。
【讨论】:
如果它们在同一个解决方案中,您可以在需要访问 Linq 类的项目中添加对 Linq 项目的引用。还是我误解了你的问题?为此,您可以右键单击需要访问 Linq 类的项目的“References”文件夹,选择“Projects”选项卡并选择 Linq-project。
如果您追求的是严格的数据访问,请遵循 Andrew Florko 的建议并构建数据访问层以获取您需要的数据。
【讨论】:
您需要做的是创建一个包含 DBML 类的类库。然后将其添加为对其他项目的引用。确保该类库中除了与数据库相关的代码外没有任何内容,以便轻松添加到未来的项目中。
然后按照 Andrew Florko 的建议执行并阅读数据访问模式。存储库很好,虽然我喜欢DAO。
【讨论】:
我不仅会将模型类,而且将整个数据访问层 (DAL) 分离到一个单独的程序集中,您可以从应用程序的其他部分引用该程序集。
DAL 将封装它如何与数据库交互的细节(在本例中是使用 LINQ to SQL)并将它们隐藏在对应用程序有意义的定义良好的接口后面。
此外,由于从 LINQ to SQL DBML 文件生成的类只是普通旧 CLR 对象 (POCO),因此我认为将它们直接作为 DAL 接口的一部分公开没有问题。
【讨论】: