C# Linq到SQL-设计问题

C# Linq到SQL-设计问题,c#,linq-to-sql,architecture,C#,Linq To Sql,Architecture,嗨, 目前我有一个包含35个表的大datacontex(我将所有DB表拖到设计器中)。我必须承认,这是非常舒适的,因为我有ORM到我的完整数据库,使用linq进行查询很简单 我的问题是: 1.如果有35个表的一个DATACONTRON,或者我应该把它拆分成逻辑单元,你会认为这是个糟糕的设计吗? 2.使用如此大的数据上下文是否会导致性能下降 谢谢,皮尼 拆分为逻辑单元 没有真正的性能惩罚,尽管这将是一个有点难以概述 有一个性能损失,因为它会在每次创建新上下文时为所有映射重建元模型,但是如果您正在

嗨, 目前我有一个包含35个表的大datacontex(我将所有DB表拖到设计器中)。我必须承认,这是非常舒适的,因为我有ORM到我的完整数据库,使用linq进行查询很简单

我的问题是: 1.如果有35个表的一个DATACONTRON,或者我应该把它拆分成逻辑单元,你会认为这是个糟糕的设计吗? 2.使用如此大的数据上下文是否会导致性能下降

谢谢,皮尼

  • 拆分为逻辑单元
  • 没有真正的性能惩罚,尽管这将是一个有点难以概述

    • 有一个性能损失,因为它会在每次创建新上下文时为所有映射重建元模型,但是如果您正在监视它,并且它不会给您带来问题,那么我就不会担心了


      我倾向于只在非常小的项目中使用DataContext,这些项目只需要建模一小部分表,除此之外,在我看来,使用更传统、更成熟的ORM(如nHibernate)更容易长期使用。

      我可以理解您的痛苦。LINQtoSQL设计器在涉及大型模型时并不出色。然而,35张桌子并不是很大

      如果可以将表拆分为两个或多个组,其中每个组完全独立于另一个组(没有关系),则在这种情况下,拆分是合理的,尤其是当组是逻辑上分离的部分时。在这种情况下,您可以为每个上下文指定一个适当的名称

      但是,当组之间存在关系时,通常表示它们是一个域的一部分。当分割这样一个域时,这意味着您将不得不复制表,这可能会很烦人且不实用,但当一个模型/上下文只读取该表时,就可以了


      还要注意,拆分de模型可能会在您的体系结构中产生一些恼人的副作用。当然,这取决于您的体系结构。我开发的一个应用程序使用了“服务命令”,代表表示层执行业务逻辑。一个自动构造为命令提供了一个DataContext实例,并且有多个DataContext使得该设计非常令人沮丧。

      我现在没有看到任何性能问题,因为该产品正在开发中,我是系统中唯一的用户。但我想知道如果我有20个并发用户会发生什么。我知道有一些工具可以测试负载,但我想听听其他人的意见。我想,体面的硬件可以处理20个用户/35个表/数千行/个表,但实际上没有办法根据给出的信息来确定答案。可以肯定的是,这是对性能的一次打击,您需要优化的性能是否足够,只有通过监视和负载测试才能知道(虽然我的直觉告诉我,只要你正确地处理上下文,使它们短命,有合适的硬件,没有任何在你的帖子中没有提到的明显缺陷,你就可以了)别忘了标记你最喜欢的答案;-)。