使用SqlMetal和Visual Studio时自动生成DataContext设计器文件
我正在使用SqlMetal使用LinqToSql将ASP.net应用程序的DataContext.dbml类通用化。当我最初创建DataContext.dbml文件时,Visual Studio使用它来创建相关的DataContext.designer.cs文件。该设计器文件包含C语言中的DataContext类,该类在整个应用程序中使用(并从dbml文件中的XML派生),并且对于弥合SqlMetal输出和将DataContext与LinqToSql一起使用之间的差距至关重要。
但是,当我对数据库进行更改并重新创建dbml文件时,设计器文件永远不会在我的网站中重新生成。而是保留了旧的设计器文件(因此,通过LinqToSql DataContext类无法访问DBML文件的任何更改)。
到目前为止,我唯一可以用来重新生成设计器文件的过程是
- 转到Windows资源管理器并删除dbml和designer.cs文件
- 转到Visual Studio,然后在"解决方案资源管理器"中单击"刷新"。 dbml和designer.cs文件现在从项目中消失。
- 使用SqlMetal重新生成dbml文件
- 转到Visual Studio,然后在"解决方案资源管理器"中单击"刷新"。现在,重新创建了designer.cs文件。
似乎Visual Studio仅在检测到尚没有designer.cs文件的新的dbml文件时才生成designer.cs文件。这个过程非常不切实际,因为它涉及几个手动步骤,并且将源代码管理弄得一团糟。
有谁知道我可以如何自动重新生成designer.cs文件,而不必遵循上面概述的手动删除/刷新/重新生成/删除过程?
解决方案
在Visual Studio中更改DBML时,通常会自动维护designer.cs文件。如果在重新创建DBML时VS没有运行,则可能不知道。
检查Visual Studio中的.DBML文件是否已将"自定义工具"属性设置为MSLinqToSQLGenerator。如果不是,则将其设置为该值。如果是这样,请在进行更改后尝试右键单击DBML,然后选择"运行自定义工具"以查看是否更新了.designer.cs。
原始海报:运行Visual Studio中的运行自定义工具可重新生成designer.cs文件。
我还找到了一个更好的解决方案,可以使用SqlMetal生成类文件:" sqlmetal /code:DataContext.designer.cs / language:csharp DataContext.dbml"。