Linq-to-SQL:有多少datacontexts?

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

哪个是使用Linq-to-SQL的最佳方法?

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

有什么问题吗 ?

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

谢谢。

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

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

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

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

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

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

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