質問

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でログインしました。テストはあなたに任せます。

これは実行可能なソリューションかもしれません - ビジュアルデザイナーはまだこのように機能し、他のアイテムをスキーマのない機能を破ることなく追加することができ、機能自体はデザイナーに文句を与えません。幸運を!

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top