ストアド プロシージャを linq データ コンテキストに追加すると、既定では、Visual Studio はストアド プロシージャに含まれる SQL スキーマのプレフィックスを付けます。これを停止する方法はありますか? 私たちの環境では、ストアド プロシージャは時間の経過とともに他のスキーマに移動される可能性があり、接続に使用された sql ユーザーに基づいてスキーマをデフォルトに設定します。これを手動で行う必要がありますか、それともスキーマ プレフィックスを無効にすることはできますか?
1 に答える
1
デザイナーを使用して、LINQ-to-SQL マップ ストアド プロシージャからスキーマを削除する方法はないようです。すべての proc はスキーマ名を含めてマップされます。これは (公平に言えば) ほとんどのアプリケーションにとっておそらく良いことです。また、ほとんどの 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()
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 に答える