2010-04-23 90 views
2

当我将存储过程添加到linq datacontext时,默认情况下,visual studio将存储过程作为它所在的sql模式的前缀。是否有任何方法可以阻止它?在我们的环境中,随着时间的推移,存储过程可能会移动到其他模式,我们将默认基于用于连接的sql用户的模式。我必须手动执行此操作还是可以以某种方式关闭模式前缀?从linq datacontexts(dbml)中删除模式

回答

1

似乎没有任何方法可以使用设计器从LINQ到SQL映射存储过程中删除架构。所有的procs都被映射,包括他们的模式名称,这对于大多数应用程序来说(公平的)可能是一件好事。和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文件中删除的架构&保存在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登录作为默认模式。我会把测试留给你。

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