2

ストアド プロシージャを linq データ コンテキストに追加すると、既定では、Visual Studio はストアド プロシージャに含まれる SQL スキーマのプレフィックスを付けます。これを停止する方法はありますか? 私たちの環境では、ストアド プロシージャは時間の経過とともに他のスキーマに移動される可能性があり、接続に使用された sql ユーザーに基づいてスキーマをデフォルトに設定します。これを手動で行う必要がありますか、それともスキーマ プレフィックスを無効にすることはできますか?

4

1 に答える 1

1

デザイナーを使用して、LINQ-to-SQL マップ ストアド プロシージャからスキーマを削除する方法はないようです。すべての proc はスキーマ名を含めてマップされます。これは (公平に言えば) ほとんどのアプリケーションにとっておそらく良いことです。また、ほとんどの LINQ-to-SQL と同様に、データベースは自己責任で変更してください。データベースの変更が多すぎるため、LINQ-to-SQL dbml の更新と再構築が必要でした。

さらに掘り下げると、スキーマ名はバッキングdbmlXML ファイルに格納され、designer.cs呼び出される関数/メソッドを含む生成されたファイルに含まれます。

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

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

XML ファイルを手動で編集しdbmlてスキーマを削除し、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 でログインしました。テストはお任せします。

これは実行可能な解決策である可能性があります。ビジュアル デザイナーは引き続きこのように機能し、スキーマのない関数を壊すことなく他の項目を追加することができ、関数自体がデザイナーに文句を言わせることはありません。頑張ってください!

于 2011-09-19T06:58:24.050 に答える