我的问题是这样的:
我们有一个非常大的 Legacy DB,其中包含许多 SPROC、视图和表。
设计师是尺寸的“NO GO”b/c。
我已经配置 SQL Metal 来构建数据上下文,但是生成的代码文件太大(12MB),Visual Studio 2008 无法打开它。
如果 SQLMetal 会为每个类类型(表、视图、SPROC_Result)生成一个新文件,我会没事的。
但由于它目前有效,我很高兴。
想法??
我的问题是这样的:
我们有一个非常大的 Legacy DB,其中包含许多 SPROC、视图和表。
设计师是尺寸的“NO GO”b/c。
我已经配置 SQL Metal 来构建数据上下文,但是生成的代码文件太大(12MB),Visual Studio 2008 无法打开它。
如果 SQLMetal 会为每个类类型(表、视图、SPROC_Result)生成一个新文件,我会没事的。
但由于它目前有效,我很高兴。
想法??
事实证明有很多方法可以做到这一点:
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 分钟(哎呀)。
你可以这样做:
在您的过滤阶段(第 2 步),您还可以根据其他要求创建 .dbml 文件的其他任意部分。也许过滤掉一些不必要的表或视图。或者将表格分解为具有单独 DataContexts 的逻辑组件。
刚刚确定 Resharper 在非常大的 DataContext.cs 文件上使 VisualStudio 崩溃。但是Keltex的建议是非常好的。
我们正在使用http://t4-editor.tangible-engineering.com/T4-Editor-Visual-T4-Editing.html
然后,您可以将数据上下文拆分为 .tt 模板中的单独类文件,事实上,您喜欢它,它为扩展代码提供了充足的机会,并且有一个可以满足基本需求的免费版本。
问候