2

当我将存储过程添加到 linq 数据上下文时,默认情况下,Visual Studio 会为其所在的 sql 架构为存储过程添加前缀。有什么方法可以阻止这种情况吗?在我们的环境中,存储过程可能会随着时间的推移移动到其他模式,我们将基于用于连接的 sql 用户默认模式。我必须手动执行此操作还是可以以某种方式关闭架构前缀?

4

1 回答 1

1

似乎没有任何方法可以使用设计器从 LINQ-to-SQL 映射的存储过程中删除架构。所有 proc 都被映射,包括它们的模式名称,这(公平地说)对于大多数应用程序来说可能是一件好事。与大多数 LINQ-to-SQL 一样,更改数据库需要您自担风险。太多的数据库更改需要 LINQ-to-SQL dbml 更新和重建。

深入挖掘,模式名称存储在支持的dbmlXML 文件中,然后包含在生成的designer.cs文件中,该文件包含被调用的函数/方法。

// dbml
<Function Name="dbo.MyProc" Method="MyProc">

// designer.cs
[global::System.Data.Linq.Mapping.FunctionAttribute(Name="dbo.MyProc")]
public int MyProc()

如果您手动编辑dbmlXML 文件以删除架构并在 Visual Studio 中保存,代码将像这样重新生成:

// changed dbml - removed the dbo schema
<Function Name="MyProc" Method="MyProc">

// the resultant generated code in designer.cs
[global::System.Data.Linq.Mapping.FunctionAttribute()]
public int MyProc()

这适用于我的帐户,使用 dbo 作为默认架构登录。我将把测试留给你。

这可能是一个可行的解决方案 - 视觉设计师仍然像这样工作,可以添加其他项目等而不会破坏无模式功能,并且功能本身不会导致设计师抱怨。祝你好运!

于 2011-09-19T06:58:24.050 回答