Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/linq/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Linq到SQL类的重新生成_Linq_Linq To Sql - Fatal编程技术网

Linq到SQL类的重新生成

Linq到SQL类的重新生成,linq,linq-to-sql,Linq,Linq To Sql,我一直在asp.net项目的数据访问层中使用这个漂亮的LINQtoSQL工具。我一直在对基础表进行更改,为了使数据类能够识别更改,我必须删除并读取已更改的表。重新生成数据层有什么捷径吗 您可以使用sqlmetal,它是linq to sql类的命令行类生成器。我遇到过同样的问题,使用sqlmetal肯定是解决这个问题的好方法。一种方法是创建一个执行sqlmetal命令的批处理文件,这样您就可以在需要更新Linq到SQL类的任何时候运行批处理,但更巧妙的解决方案是使用Visual Studio的工

我一直在asp.net项目的数据访问层中使用这个漂亮的LINQtoSQL工具。我一直在对基础表进行更改,为了使数据类能够识别更改,我必须删除并读取已更改的表。重新生成数据层有什么捷径吗

您可以使用sqlmetal,它是linq to sql类的命令行类生成器。

我遇到过同样的问题,使用sqlmetal肯定是解决这个问题的好方法。一种方法是创建一个执行sqlmetal命令的批处理文件,这样您就可以在需要更新Linq到SQL类的任何时候运行批处理,但更巧妙的解决方案是使用Visual Studio的工具->外部工具功能在Visual Studio中创建一个命令,该命令使用您的参数运行sqlmetal。这非常有效,您甚至可以将已创建的命令放到工具栏上进行单击重建。

对于SQLMetal没有完全剪切它的情况/模型,例如,由于数据库和模型中的命名约定不同,或者L2S模型中的一些其他自定义项我有一个用于Visual Studio的外接程序,它添加命令以使L2S设计器与基础数据库[schema]同步。(加上一系列其他L2和EF相关功能)


您可以阅读更多关于它的信息,下载它并从

获得30天的试用许可证。LINQ to SQL版本1不支持检测数据库架构更改。修改生成的类的唯一方法是使用设计器或SQLMetal重新生成它们

请记住,SQLMetal和设计器之间没有太多区别,设计器是SQLMetal的一个更“漂亮”的UI,并且隐藏了许多命令行开关

我使用设计器,因为我太懒了,无法不断加载命令提示符


此外,确保不要将自己的代码写入生成的类中,否则会在重新生成时丢失它。所有生成的类都是部分类,这意味着您可以在单独的文件中轻松添加自己的扩展程序。

在我以前工作的地方,我们为sqlmetal生成的DataContext创建了一个包装类。然后,我们创建了一个精简的数据层,该层保持DataContext和sqlmetal生成的所有类的私有性

如果软件中的任何操作需要来自数据库的信息,它们必须通过这个包装层来获取信息。换句话说,LINQ到SQL不能出现在此数据层之外


这样,每当我们必须通过sqlmetal重新生成类时,只有数据层的一部分会中断。修复所有数据访问代码所在的一个层要比在整个逻辑或应用程序域中将LINQ少量更改为SQL容易得多。

如何保持我的延迟加载属性?我的意思是,当我使用sqlmetal重新生成模型时,我丢失了那些设置为延迟加载的FK属性。有办法留住他们吗?非常感谢。