Linq to sql linqtosql与大型数据库模型

Linq to sql linqtosql与大型数据库模型,linq-to-sql,Linq To Sql,首先,我是Linq to Sql新手,所以请温柔一点:) 我在过去3.5年中开发了现有的ASP.Net应用程序。它下面有相当大的数据模型,大约350个表。我正在尝试用LINQtoSQL做一些新的事情 第一印象是linq designer和SqlMetal是为不比NorthWind示例大的数据库构建的。以下是我遇到的一些问题: 我有很多地方需要的表产品(库存、发票、生产等)。如果我将表Products放在每个dbml文件中,linq设计器将在每个dbml文件中创建Product类。我不想那样。我只

首先,我是Linq to Sql新手,所以请温柔一点:)

我在过去3.5年中开发了现有的ASP.Net应用程序。它下面有相当大的数据模型,大约350个表。我正在尝试用LINQtoSQL做一些新的事情

第一印象是linq designer和SqlMetal是为不比NorthWind示例大的数据库构建的。以下是我遇到的一些问题:

  • 我有很多地方需要的表
    产品
    (库存、发票、生产等)。如果我将表
    Products
    放在每个dbml文件中,linq设计器将在每个dbml文件中创建
    Product
    类。我不想那样。我只想要一个
    产品
  • 我有关于运输的资料。大约需要40张桌子。这使得dbml文件很难管理。有没有办法创建较小的dbml文件,然后将它们(作为参考)包含到一些“主要”dbml中
  • 现在,我真的很喜欢Linq,但我认为它仍然严重缺乏用于任何大于10个表的设计工具

    我现在的解决方案是使用Linq designer构建较小的模型,然后手动合并它们(添加属性和引用),这样会生成大量代码,但也会有大量手动工作


    我是否错过了一些重要的事情,或者Linq to Sql的这种现状是什么?

    如果我是你,我会使用它,因为这是微软推荐的ORM未来版

    你有没有看到这篇关于MSDN的文章


    似乎有一个命令行工具可以生成对象模型,而不使用VS.net中的可视化设计器。

    为什么需要多个dbml文件?把它们粘在一起就行了。这就是它的工作原理。

    好吧,我的解决方案是使用SQLMetal的
    /code
    选项在.cs文件中而不是DBML文件中创建普通类,并在单独的文件中使用分部类来扩展生成的ORM类


    我知道这并不能解决将数据库的一部分拆分为不同的ORM程序集的问题——我只是发现,如果不让DBML/Designer头疼的话,在一个.cs文件中管理大量的类也不算太糟糕。

    我没有答案,但我也有兴趣知道这一点,因为我注意到了同样的事情。如果我有很多表,我想我也会这么做。我不明白为什么SqlMetal不是你问题的答案?它在大型多表数据库中运行良好。我刚刚将一个批处理脚本连接到Visual Studio中的“外部工具”菜单,这样我就可以通过单击重建ORM。@詹姆斯·麦科马克:请添加答案并描述如何组织类。我想要的是有汇编清单,并且在大约20-30个类中,对应于相同数量的表。然后是组装销售,然后是财务。我并没有找到简单的方法来实现自动化,所以我求助于:为少量表创建dbml,然后手动编辑代码。你知道SqlMetal for.Net4是否得到了改进吗?我认为这并不能回答问题,我认为当我们讨论在一个EF文件或更小的文件组中建模350个表时,EF也有同样的缺点。EF设计器在处理大型模型方面更差。两位设计师都需要一种“页面化”的方法,允许将模型分成小的、可消化的视图。或拆分/合并功能,允许将许多小型设计器模型合并到单个对象模型中。这就是OP提到的SqlMetal。好吧,我不确定,因为文章提到了SQL Metal代码生成器:“建模大型数据库最好使用此工具。”我认为其中一个问题是,当你开始添加大量数据库时,设计者开始变得无法使用。你是否尝试在一个dbml中放入350个表?对于小型模型来说,一体机是很好的选择。然而,拥有一个模型图的目的是获得一个概览。将模型划分为多个主题区域使其易于概述,单个300表模型不可能概述。