【问题标题】:LINQ and Stored procedures DBML updating problemLINQ 和存储过程 DBML 更新问题
【发布时间】:2011-01-24 09:26:35
【问题描述】:

当我更改我的存储过程时,我对 DBML 文件没有更新感到非常沮丧。

这就是发生的事情。我改变了我的存储过程。然后我从 .DBML 文件中删除存储过程并重新添加它。它在 .DBML 文件中正确更新,但 .designer.cs 文件没有得到更新。我发现的唯一解决方法是删除存储过程,然后删除存储过程返回的表,添加表然后添加存储过程(全部在 .DBML 文件中)。这只有时会奏效。

还有其他人遇到过这个问题吗?在 Visual Studio 2008 中肯定有更合适的方式来更新 DBML 文件吗?

提前致谢

【问题讨论】:

  • DBML 视觉设计器非常“一次性”——没有任何类型的更新功能。您可以研究第三方工具,例如 Huagati 的 DBML Tools 来解决这个问题,或者切换到 Entity Framework 4,它可以更好地支持在底层数据库发生更改时从数据库更新现有模型。
  • 我知道这是旧的,但我今天偶然发现它以了解行为(添加新的设计器类)是否是预期的。为什么不从新创建的类剪切和粘贴到旧类,然后删除新创建的类。这样可以使用您的版本控制对事物进行排序,并为您提供正确的类。

标签: visual-studio linq-to-sql


【解决方案1】:

当您更改 SP 时,DBML 文件无法更新。

我有一个建议让你摆脱它。这就是我们在项目中所遵循的。

每当您在 SP 中进行更新时,无论是输入参数还是输出参数。将 dbml 文件编辑为 xml 文件(您只能在 VS 中使用 open as xml)并保存 dbml 文件。这也将自动更新 Designer.cs 文件中的更改。这样,您不必从 dbml 中删除 SP 并重新添加它来获取更新。虽然这是手动过程,但它确实对您有很大帮助。

这样,您甚至可以修改从 SP 获得的输出的实体名称(以符合您的实体命名约定),因为这些默认名称与 SP 名称相同。

【讨论】:

  • 注意:为了让 Visual Studio 重新生成 designer.cs 文件,您必须编辑 dbml 文件作为 Visual Studio 中的 XML(在解决方案资源管理器中单击鼠标右键,然后选择 打开方式...)。在单独的文本编辑器中编辑/保存它不会导致 designer.cs 文件的重新生成。
  • 我在 VS 2012 中使用文本编辑器编辑也成功了。
【解决方案2】:

我做的另一件事是,从视图中打开服务器资源管理器。在那里它将列出数据库连接。右键单击指向您的数据库的特定连接并刷新。如果您添加了任何新的存储过程或更新了任何存储过程,它将自动更新。

【讨论】:

    【解决方案3】:

    1 请记住,SQL 和 VS 是完全独立的 2 个服务。它只是连接在一起,并不意味着它相互同步。

    2 在我看来,DBML 只是有点 ms-sql。我用来创建数据库工厂,完全基于接口操作,并将数据作为 DataTable ot DataSet 返回。此代码可用于所有标准数据库。

    【讨论】:

      【解决方案4】:

      在 Entity Framework 6 中这也是一个问题。 删除 .edmx 文件和“从数据库更新模型”中更改的元素。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2014-11-30
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2021-07-30
        • 1970-01-01
        相关资源
        最近更新 更多