2009-07-18 2 views
1

強く型付けされた結果セットを返すストアドプロシージャがいくつかあります。 私はLinqがそれを扱うための独自の方法を持っていることを知りました。それは上書きされなければなりません(少なくともそうそうです)。Visual StudioでLinqストアドプロシージャをストンプする

私の問題は、Visual Studioではストアドプロシージャを強制的に再作成することが時々あります。私はこれを無効にしたい。ここで

は私の手で変更されたファイルである:これは小さいものの一つである

[Function(Name="dbo.spGetNote")] 
    public ISingleResult<spGetNoteResult> spGetNote([Parameter(DbType="Int")] System.Nullable<int> noteId, [Parameter(DbType="Int")] System.Nullable<int> securityUserId) 
    { 
     IExecuteResult result = this.ExecuteMethodCall(this, ((MethodInfo)(MethodInfo.GetCurrentMethod())), noteId, securityUserId); 
     return ((ISingleResult<spGetNoteResult>)(result.ReturnValue)); 
    } 

:ここ

[Function(Name="dbo.spGetNote")] 
    public ISingleResult<Note> spGetNote([Parameter(DbType="Int")] System.Nullable<int> noteId, [Parameter(DbType="Int")] System.Nullable<int> securityUserId) 
    { 
     IExecuteResult result = this.ExecuteMethodCall(this, ((MethodInfo)(MethodInfo.GetCurrentMethod())), noteId, securityUserId); 
     return ((ISingleResult<Note>)(result.ReturnValue)); 
    } 

何がデフォルトそれまでです。

他のいくつかの領域がありますが、修正可能です。それはを実際に戻ってこれを調整します。

私たちがやったことは、厳密に型指定されたアイテムを返すすべてのストアドプロシージャは、自分自身のデータコンテキスト/クラスであるため、DALを更新するたびに(Visual Studio)はカスタム変更。

この頭痛を和らげるためにできることはありますか?

名前空間をクリーンアップするつもりで、Visual Studioがプロジェクト内のすべてのストアドプロシージャをリッピングせずに名前空間を変更できないことがわかりました。私は時間を費やしたくありませんその混乱をきれいにする。 Visual Studioがこれを検出してから接続文字列を見つけることができないと言い、すべての単一ファイルを再構築する必要があると言われているようです。

答えて

2

:しかし、IMO、これを処理する最も簡単な方法は、あなたのタイプにDBML生成型からの投影を行うには、リポジトリ内にありますカスタマイズされたメソッド/タイプを部分的に移動します。即ち

MyDataContext.cs

public partial MyDataContext 
{ 
     [Function(Name="dbo.spGetNote")]   
     public ISingleResult<Note> spGetNote([Parameter(DbType="Int")]... 
} 

public class Note... 

ジョー

+0

のEE GAD。私は知っていた*それらの部分クラスの理由があった。それでもまだ私は決して殴られませんでした。どうもありがとう! –

1

生成されたコードは変更しないでください。そうすると、dbmlファイルを見るたびに変更内容が失われる可能性があります。あなたはかもしれません(私は試していません)手でdbmlを編集することでこれを解決できるように(それは単なるXMLです);自動生成のDataContextは部分的である、あなた自身の部分を作成することができますので、

Note[] SomeFunc(...) { 
    using(var ctx = ...) { 
     return (from row in ctx.SomeSP(...) // row is the dbml type 
      select new Note { // Note is our custom type 
       Id = row.Id, 
       Name = row.Name, 
       // etc 
       }).ToArray(); // or whatever 
    } 
} 
関連する問題