linq datacontexts(dbml)からスキーマを削除します
-
01-10-2019 - |
質問
LINQ DataContextにストアドプロシージャを追加すると、デフォルトではVisual Studioプレフィックスがあります。SQLスキーマのストアドプロシージャは、これを止める方法はありますか?私たちの環境では、ストアドプロシージャは時間の経過とともに他のスキーマに移動する場合があり、接続に使用されるSQLユーザーに基づいてスキーマをデフォルトします。これを手動で行う必要がありますか、それともスキーマプレフィックスを何らかの形でオフにすることができますか?
解決
設計者を使用して、LINQ-to-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でログインしました。テストはあなたに任せます。
これは実行可能なソリューションかもしれません - ビジュアルデザイナーはまだこのように機能し、他のアイテムをスキーマのない機能を破ることなく追加することができ、機能自体はデザイナーに文句を与えません。幸運を!