从linq datacontexts(dbml)中删除模式

时间:2010-04-23 16:27:52

标签: linq linq-to-sql generated-code

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

1 个答案:

答案 0 :(得分:1)

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

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

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

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

如果您手动编辑dbml XML文件以删除架构&amp;在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作为默认架构登录。我会把测试留给你。

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