c# - Linq-to-SQL:有多少数据上下文?

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

我有一个包含超过 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/

相关文章:

c# - EF Core 多对多隐藏枢轴

c# - 您如何使该switch语句尽可能快?

javascript - UpdatePanel 触发时图像不显示

mysql - 使用 group by 时有什么方法可以获取各个行的值吗?

c# - 为什么 C# round 和 SQL round 函数产生不同的输出?

c# - 从抽象类型对象数组访问特定子类的对象

sql - 选择所有记录的列最大值和最小值

sql - 如何在 SQLite 子查询连接中指定列

c# - 十进制 SQL Server EF C# 的参数超出范围异常

c# - 将 Int 参数从 C# 发送到存储过程