我有一个带有>的SQL Server 2008数据库300桌。我必须设计的应用程序是Windows Forms应用程序,.NET 3.5,C#。
使用Linq-to-SQL的最佳方法是什么?
我打算为每个商业实体制作一个datacontext。
有什么问题吗?
我需要知道这种使用Linq-to-SQL的方式是否有任何缺点或是否会产生性能问题?
感谢。
答案 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表示整个数据库,但是有更多的合法用途。例如,我在安装连接到远程数据库的站点时运行脚本,并导入数据并将数据转换为新格式以进行部署。该过程使用一些临时表。
通过将临时表放在单独的上下文中,一旦部署了站点,我就可以删除这些上下文和代码,因为它们是独立的实体。