Linq-to-SQL:有多少datacontexts?

时间:2010-05-29 14:26:23

标签: c# sql sql-server linq-to-sql

我有一个带有>的SQL Server 2008数据库300桌。我必须设计的应用程序是Windows Forms应用程序,.NET 3.5,C#。

使用Linq-to-SQL的最佳方法是什么?

我打算为每个商业实体制作一个datacontext。

有什么问题吗?

我需要知道这种使用Linq-to-SQL的方式是否有任何缺点或是否会产生性能问题?

感谢。

4 个答案:

答案 0 :(得分:8)

每个数据库通常应该有一个单独的DBML文件(=数据上下文)。你当然不应该为每个业务实体创建一个DataContext,因为这样做会让你失去LINQ to SQL的大部分有用功能,比如内存事务(工作单元),延迟加载和多个LINQ查询实体。

你有一个非常大的模型(+300表),这意味着很多实体。除了LINQ to SQL设计器之外,很多实体都不是一个大问题。使用具有如此大型号的设计师可能非常烦人。这可能是在多个子域中拆分域的原因(每个子域都有一个DBML文件),但肯定不是每个实体一个域。但是,请记住,您在域的边界处丢失了L2S功能。

过去,我建议一个团队将5个DBML文件中的+150实体域分开,然后将它们合并为一个DBML。编辑模型的痛苦上升了,但使用多个DataContext的痛苦消失了,这大大降低了他们的整体痛苦。

答案 1 :(得分:6)

为每个业务实体制作数据上下文没有意义,每个数据库只需要一个datacontext。

答案 2 :(得分:0)

这取决于有多少用户同时使用您的数据库,而不是有多少表。所以关于典型的数据库问题:连接数,锁定和其他东西。

答案 3 :(得分:0)

我现在使用1表示整个数据库,但是有更多的合法用途。例如,我在安装连接到远程数据库的站点时运行脚本,并导入数据并将数据转换为新格式以进行部署。该过程使用一些临时表。

通过将临时表放在单独的上下文中,一旦部署了站点,我就可以删除这些上下文和代码,因为它们是独立的实体。