2

我的问题是这样的:

我们有一个非常大的 Legacy DB,其中包含许多 SPROC、视图和表。

设计师是尺寸的“NO GO”b/c。

我已经配置 SQL Metal 来构建数据上下文,但是生成的代码文件太大(12MB),Visual Studio 2008 无法打开它。

如果 SQLMetal 会为每个类类型(表、视图、SPROC_Result)生成一个新文件,我会没事的。

但由于它目前有效,我很高兴。

想法??

4

4 回答 4

1

事实证明有很多方法可以做到这一点:

1)建立自己的(1周为我:DBML上帝)http://southernbits.com/index.php/2009/05/16/dbml-hell-legacy-db-sqlmetal-is-painful-when-migrating-来自-sql-designer/

2)使用现有工具(这可能有效,但我还没有完全探索)http://www.plinqo.com/

3) 警惕 SQLMetal 和 SQL Designer 之间的差异。见博客:http ://southernbits.com/index.php/2009/05/25/unfortunate-differences-between-linq-sqlmetal-and-sqldesigner/

最后,这花了我 1 周的时间探索(我没有发现 plinqo)。简单的解决方案并没有出现。考虑到 SQLMetal 和 SQLDesigner 之间的差异,我花了 1.5 周的时间来构建一个工具(DBMLGod),又花了 1 周的时间来重构/编译代码)。测试时间待定...

如果您没有使用 SQL Designer 构建的大型代码库,您可能不会遇到那么多问题。

我认为所有大型、凌乱的数据库(使用大量复杂的存储过程并拥有大量对象)都会很痛苦。

在 QuadCore 4GB 开发盒上,我们数据库的 SQLGeneration 时间是 15 分钟(哎呀)。

于 2009-05-25T14:33:02.750 回答
1

你可以这样做:

  1. 运行 SQLMetal.exe 以创建 .dbml 文件。
  2. 创建一个小脚本或应用程序来将 .dbml 文件(即 XML)解析为 3 个组件:表、存储过程和视图
  3. 在每个新的 .dbml 文件上运行 SQLMetal.exe 以创建 3 个单独的 .cs 文件。

在您的过滤阶段(第 2 步),您还可以根据其他要求创建 .dbml 文件的其他任意部分。也许过滤掉一些不必要的表或视图。或者将表格分解为具有单独 DataContexts 的逻辑组件。

于 2009-05-06T20:29:26.463 回答
0

刚刚确定 Resharper 在非常大的 DataContext.cs 文件上使 VisualStudio 崩溃。但是Keltex的建议是非常好的。

于 2009-05-06T21:32:16.017 回答
0

我们正在使用http://t4-editor.tangible-engineering.com/T4-Editor-Visual-T4-Editing.html

然后,您可以将数据上下文拆分为 .tt 模板中的单独类文件,事实上,您喜欢它,它为扩展代码提供了充足的机会,并且有一个可以满足基本需求的免费版本。

问候

于 2011-04-09T14:14:26.877 回答