2010-04-23 85 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登錄作爲默認模式。我會把測試留給你。

這可能是一個可行的解決方案 - 可視化設計師仍然可以像這樣工作,其他項目可以添加等,而不會打破無模式功能,而且功能本身不會導致設計師抱怨。祝你好運!