如何在生成12MB DataContext.cs文件时使用SQLMetal为大型DB创建LINQ To SQL datacontext?

时间:2009-05-06 20:21:36

标签: linq linq-to-sql sqlmetal

我的问题是:

我们有一个非常庞大的Legacy DB,包含许多SPROC,Views&表。

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

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

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

但是因为它目前有效,我已经被软管了。

想法?

4 个答案:

答案 0 :(得分:1)

你可以这样做:

  1. 运行SQLMetal.exe以创建.dbml文件。
  2. 创建一个小脚本或应用程序,将.dbml文件(即XML)解析为3个组件:表,存储过程和视图
  3. 在每个新的.dbml文件上运行SQLMetal.exe以创建3个单独的.cs文件。
  4. 在过滤阶段(步骤2)中,您还可以根据其他要求创建.dbml文件的其他任意分区。也许过滤掉一些不必要的表或视图。或者使用单独的DataContexts将表分成逻辑组件。

答案 1 :(得分:1)

原来有很多方法可以做到这一点:

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

2)使用现有工具(这可能有用但我 NOT 尚未完全探索过)http://www.plinqo.com/

3)警惕SQLMetal& SQL Designer。请参阅博客:http://southernbits.com/index.php/2009/05/25/unfortunate-differences-between-linq-sqlmetal-and-sqldesigner/

最后,这花了我一个星期的探索(我没有发现plinqo)。简单的解决方案并没有出现。我花了1.5周的时间来构建一个工具(DBMLGod),另外花了一周的时间来重构/编译代码,给出了SQLMetal和SQLDesigner之间的差异。测试时间是TBD ......

如果 NOT 具有使用SQL Designer构建的大型代码库,则可能不会有太多问题。

我认为所有大型,不整洁的数据库(使用大量复杂的sprocs并且有很多对象)都会很痛苦。

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

答案 2 :(得分:0)

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

答案 3 :(得分:0)

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

然后你可以将datacontext拆分成.tt模板中的单独的类文件,事实上你喜欢它,它提供了扩展代码的充足机会,并且有一个免费版本,应该符合基本需求。

此致