Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/118.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 to sql 如何将Linq更新为SQL dbml文件?_Linq To Sql - Fatal编程技术网

Linq to sql 如何将Linq更新为SQL dbml文件?

Linq to sql 如何将Linq更新为SQL dbml文件?,linq-to-sql,Linq To Sql,如何将Linq更新为SQL.dbml文件?我建议使用VS2008内置的可视化设计器,因为更新dbml也会更新为您生成的代码。在可视化设计器之外修改dbml会导致底层代码不同步。我建议使用VS2008内置的可视化设计器,因为更新dbml也会更新为您生成的代码。在可视化设计器之外修改dbml将导致底层代码不同步。有三种方法保持模型同步 从设计器中删除修改后的表,然后从数据库资源管理器中将它们拖回设计器图面。我发现,要使其可靠工作,您必须: a。在数据库资源管理器中刷新数据库架构右键单击“刷新” B删

如何将Linq更新为SQL.dbml文件?

我建议使用VS2008内置的可视化设计器,因为更新dbml也会更新为您生成的代码。在可视化设计器之外修改dbml会导致底层代码不同步。

我建议使用VS2008内置的可视化设计器,因为更新dbml也会更新为您生成的代码。在可视化设计器之外修改dbml将导致底层代码不同步。

有三种方法保持模型同步

从设计器中删除修改后的表,然后从数据库资源管理器中将它们拖回设计器图面。我发现,要使其可靠工作,您必须:

a。在数据库资源管理器中刷新数据库架构右键单击“刷新” B删除表后保存设计器 C将表拖回后再次保存

但是请注意,如果您修改了任何属性(例如,关闭关联的子属性),这显然会丢失这些修改-您必须再次进行修改

使用SQLMetal从数据库中重新生成架构。我已经看到一些博客文章显示

直接在DBML的属性窗格中进行更改。这适用于简单的更改,例如允许字段为空


默认情况下,未在Visual Studio 2015、2017或2019中安装DBML设计器。您必须关闭VS,启动VS安装程序并修改安装。LINQ to SQL工具是您必须安装的功能。对于VS 2017/2019,您可以在“单个组件>代码工具”下找到它。

有三种方法保持模型同步

从设计器中删除修改后的表,然后从数据库资源管理器中将它们拖回设计器图面。我发现,要使其可靠工作,您必须:

a。在数据库资源管理器中刷新数据库架构右键单击“刷新” B删除表后保存设计器 C将表拖回后再次保存

但是请注意,如果您修改了任何属性(例如,关闭关联的子属性),这显然会丢失这些修改-您必须再次进行修改

使用SQLMetal从数据库中重新生成架构。我已经看到一些博客文章显示

直接在DBML的属性窗格中进行更改。这适用于简单的更改,例如允许字段为空


默认情况下,未在Visual Studio 2015、2017或2019中安装DBML设计器。您必须关闭VS,启动VS安装程序并修改安装。LINQ to SQL工具是您必须安装的功能。对于VS 2017/2019,您可以在“单个组件>代码工具”下找到它。

您还可以查看基于CodeSmith的代码生成模板集,它允许您为Linq to SQL做很多整洁的事情:

每个类生成一个文件,而不是一个巨大的文件 根据需要更新您的模型 更多功能 请访问PLINQO网站并观看介绍视频

我知道的第二个工具是,它允许将DBML Linq更新为SQL和EDMX实体框架映射文件,更像是命名约定等


Marc

您还可以查看基于CodeSmith的代码生成模板集,它允许您为Linq to SQL做很多整洁的事情:

每个类生成一个文件,而不是一个巨大的文件 根据需要更新您的模型 更多功能 请访问PLINQO网站并观看介绍视频

我知道的第二个工具是,它允许将DBML Linq更新为SQL和EDMX实体框架映射文件,更像是命名约定等


Marc

更新表然后更新DBML有细微差别。。。如果对现有表进行了更改,外键关系并不总是立即生效。解决方法是构建项目,然后再次重新添加表。我向MS报告了这一点,并将其修复为VS2010

请注意,主要答案中给出的说明并不清楚。更新表的步骤

打开dbml设计图面 使用鼠标右键->单击->全选或点击选择所有表格 CTRLx切割 CTRLv膏 保存并重建解决方案。
更新表然后更新DBML有细微差别。。。如果对现有表进行了更改,外键关系并不总是立即生效。解决方法是构建项目,然后再次重新添加表。我向MS报告了这一点,并将其修复为VS2010

请注意,主要答案中给出的说明并不清楚。更新表的步骤

打开dbml设计图面 使用鼠标右键->单击->全选或 特拉 CTRLx切割 CTRLv膏 保存并重建解决方案。
我们使用一个自定义编写的T4模板,该模板动态查询所有.DBML文件中每个表的信息\模式模型,然后用数据库中的新模式信息覆盖.DBML文件的一部分。我强烈建议实现这样的解决方案——它节省了我大量的时间,而且与删除表并将其重新添加到模型中不同,您可以保留您的关联。使用此解决方案,当模式更改时,将出现编译时错误。不过,您需要确保使用的是版本控制系统,因为diffing非常方便。如果使用DB模式优先的方法开发,这是一个很好的解决方案。当然,我不能分享我公司的代码,所以你可以自己写。但是,如果您知道一些Linq to XML,并且可以去学校,您就可以到达您想去的地方。

我们使用自定义编写的T4模板,动态查询所有.DBML文件中每个表的信息模式模型,然后用数据库中新的模式信息覆盖.DBML文件的部分。我强烈建议实现这样的解决方案——它节省了我大量的时间,而且与删除表并将其重新添加到模型中不同,您可以保留您的关联。使用此解决方案,当模式更改时,将出现编译时错误。不过,您需要确保使用的是版本控制系统,因为diffing非常方便。如果使用DB模式优先的方法开发,这是一个很好的解决方案。当然,我不能分享我公司的代码,所以你可以自己写。但是,如果您知道一些Linq to XML,并且可以上学,那么您可以到达您想要的位置。

要使用添加的列更新.dbml关系图中的表,请执行以下操作:

更新SQL Server资源管理器窗口。 将表的新版本拖到下图中的.dbml图表报告1中。 在表格的新版本中标记添加的列,按Ctrl+C复制添加的列。 单击表格的旧版本,然后按Ctrl+V将添加的列粘贴到表格的现有版本中。
要使用例如添加的列更新.dbml关系图中的表,请执行以下操作:

更新SQL Server资源管理器窗口。 将表的新版本拖到下图中的.dbml图表报告1中。 在表格的新版本中标记添加的列,按Ctrl+C复制添加的列。 单击表格的旧版本,然后按Ctrl+V将添加的列粘贴到表格的现有版本中。
在存储过程更新的情况下,应该将其从.dbml文件中删除,然后重新插入。但是如果存储过程有两条路径,例如:if something;显示一些列;否则显示其他列,请确保这两个路径具有相同的列别名!!!否则,将只存在第一个路径列。

在存储过程更新的情况下,应将其从.dbml文件中删除,然后重新插入。但是如果存储过程有两条路径,例如:if something;显示一些列;否则显示其他列,请确保这两个路径具有相同的列别名!!!否则,将只存在第一个路径列。

以下是一个完整的分步方法,该方法对我来说非常有效,可以更新LINQ to SQL dbml和相关文件,以包含我添加到其中一个数据库表中的新列

您需要按照上述其他建议对设计图面进行更改;但是,您需要执行一些额外的步骤。以下是完整的步骤:

将更新的表从服务器资源管理器拖到设计图面上

将新列从此新表复制到旧表。有关此步骤的详细信息,请参阅M463应答

删除刚拖过的新表

单击并高亮显示存储过程,然后将其删除

拖动新存储过程并放置到位

删除.dbml的代码隐藏中的.designer.vb文件 如果不删除此项,则包含架构的代码隐藏将被删除 即使重新生成,也不会更新,并且新表字段将不包括在内

清理并重新生成解决方案这将重新生成.designer.vb文件,以包含所有新更改


下面是一个完整的分步方法,它可以帮助我更新LINQ to SQL dbml和相关文件,以包括我添加到其中一个数据库表中的新列

您需要按照上述其他建议对设计图面进行更改;但是,您需要执行一些额外的步骤。以下是完整的步骤:

将更新的表从服务器资源管理器拖到设计图面上

将新列从此新表复制到旧表。有关此步骤的详细信息,请参阅M463应答

删除刚拖过的新表

点击 并突出显示存储过程,然后将其删除

拖动新存储过程并放置到位

删除.dbml的代码隐藏中的.designer.vb文件 如果不删除此项,则包含架构的代码隐藏将被删除 即使重新生成,也不会更新,并且新表字段将不包括在内

清理并重新生成解决方案这将重新生成.designer.vb文件,以包含所有新更改




是的,但是VS2008中的可视化设计器无法检测和响应基础数据库中的更改:-除了删除和重新添加之外,不支持更新模型:-虽然这是事实,但问题非常模糊,没有特别提到当数据库更改时如何更新模型。是的,但是VS2008中的可视化设计器无法检测和响应基础数据库中的更改:-除了删除和重新添加之外,不支持更新模型:-虽然这是事实,这个问题非常模糊,没有特别提到当数据库发生变化时如何更新模型。我在没有1b的情况下尝试了1a和1c,在对视图执行简单选择时出现了“指定强制转换无效”错误。包括1b修复了meThe VS上请求的支持​, 但是微软不想修复。尝试了第一种方法,它成功了。我猜它只适用于一个小的数据库。2019年底,我需要一个在我知道什么是计算机编程之前创建的答案,这让我很痛苦。。。这是如此详细和伟大!我在没有1b的情况下尝试了1a和1c,在对视图执行简单选择时出现了“指定的强制转换无效”错误。包括1b修复了meThe VS上请求的支持​, 但是微软不想修复。尝试了第一种方法,它成功了。我猜它只适用于一个小的数据库。2019年底,我需要一个在我知道什么是计算机编程之前创建的答案,这让我很痛苦。。。这是如此详细和伟大!我不相信它是固定的,因为相关的是不固定的你在剪切和粘贴之前还是之后做了更改?已经10年了…但我相信是在…做更改然后转到2。我不相信它是固定的,因为相关的东西是不固定的。你是在剪切和粘贴之前还是之后进行更改?已经10年了…但我相信是在…更改之后转到2。刚刚删除了CodeSmith/Plinko,我强烈建议不要采用这种方法。假设这个答案已经有4年多的历史了…@恶心:在这个时候,我强烈建议不要使用Linq to SQL-改用实体框架,这是更好的选择!是的。在验证应用程序是否可以使用普通DBML而不是PLINQO之后,我下一步就是使用EF来清理旧应用程序。在刚刚删除了CodeSmith/PLINQO之后,我强烈建议不要使用这种方法。假设这个答案已经有4年多的历史了…@恶心:在这个时候,我强烈建议不要使用Linq to SQL-改用实体框架,这是更好的选择!是的。在验证应用程序是否可以使用普通的DBML而不是PLINQO之后,迁移到EF是我清理旧应用程序的下一步。这似乎是最简单的,最小破坏性方法,无需额外工具,在VS2017中运行良好。与公认的答案相比,该方法侵入性小得多,并在2018年底继续运行良好!这是对模式进行快速和非快速编辑的最佳答案。我花了很多时间使模型视图看起来很漂亮。我讨厌删除和拖动更新文件。对于添加的字段,这非常有效!对我来说,这解决了两个问题。第一个是当我试图在表中复制和粘贴一个类似的字段,然后重命名它时。验证时创建了不停止的未指定生成错误。另一个问题是,如果我删除了表,然后将其完整地添加回去,那么会导致git中的差异更大,因为对象在文件中被重新排列。使用这种方法,我只看到新字段的插入,这更干净,以后更容易理解。也许这是使它在vs2019工作的最可靠和最简单的方法!谢谢事实上,我试着使用文本编辑器来生成与此方法生成的代码相同的代码,但是vs无法生成!!!也许有缓存什么的。不管怎么说,这很有效!这似乎是最简单、破坏性最小的方法,不需要额外的工具,在VS2017中运行良好。这比公认的答案干扰小得多,并在2018年底继续运行良好!这是对模式进行快速和非快速编辑的最佳答案。我花了很多时间使模型视图看起来很漂亮。我讨厌删除和拖动更新文件。对于添加的字段,这非常有效!对我来说,这解决了两个问题。第一个是当我试图在表中复制和粘贴一个类似的字段,然后重命名它时。创建了不停止的未指定生成错误w
母鸡。另一个问题是,如果我删除了表,然后将其完整地添加回去,那么会导致git中的差异更大,因为对象在文件中被重新排列。使用这种方法,我只看到新字段的插入,这更干净,以后更容易理解。也许这是使它在vs2019工作的最可靠和最简单的方法!谢谢事实上,我试着使用文本编辑器来生成与此方法生成的代码相同的代码,但是vs无法生成!!!也许有缓存什么的。不管怎么说,这很有效!