我有一个包含超过 300 个表的 SQL Server 2008 数据库。我必须设计的应用程序是 Windows 窗体应用程序、.NET 3.5、C#。
使用 Linq-to-SQL 的最佳方式是什么?
我打算为每个业务实体创建一个数据上下文。
有什么问题吗?
我想知道这种使用 Linq-to-SQL 的方式是否有任何缺点或会产生性能问题?
谢谢。
最佳答案
通常每个数据库应该有 1 个 DBML 文件(=数据上下文)。您当然不应该为每个业务实体创建一个 DataContext
,因为这样做会使您失去 LINQ to SQL 的大部分有用功能,例如内存事务(工作单元)、延迟加载和执行 LINQ查询多个实体。
您有一个相当大的模型(+300 个表),这意味着有很多实体。很多实体不是大问题,除了 LINQ to SQL 设计器。使用设计器处理如此大的模型可能会很烦人。这可能是将一个域拆分为多个子域(每个子域都有一个 DBML 文件)的原因,但肯定不是每个实体一个。但是,请记住,您在域的边界处失去了 L2S 功能。
过去,我建议一个团队将他们的 +150 个实体域拆分为 5 个 DBML 文件,将它们合并回一个 DBML。编辑模型的痛苦增加了,但使用多个 DataContext
的痛苦消失了,这大大降低了他们的整体痛苦。
关于c# - Linq-to-SQL:有多少数据上下文?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2935429/