1

MVC5イントラネットサイト。 1つのビューには、2つのデータセットがビューに送信されます。これにより、データが正しく表示されます。しかし、データは「間違っている」。ここ は、単一のトランザクションが添付3つのリンクがありMVC5モデルのグループ化結果が正しくない

trx_ctrl_num  invoice_link   note 
VO205164   X:\SOME.pdf   Note 1 
VO205164   X:\XXXXX12345.txt  Note 1 
VO205164   X:\Tiny 2.jpg   Note 1 

として私が使用しているSQLをキャッチし、その結果を返すためにSQL管理スタジオでそれを実行するために、SQLプロファイラを使用することができますC#コード

List<object> myList = new List<object>(); 
     myList.Add(db.hw_poapp_VoucherDetail_vw.Where(a => a.trx_ctrl_num == id).ToList()); 
     myList.Add(db.hw_poapp_VoucherDetailNotes_vw.Where(a => a.trx_ctrl_num == id).ToList()); 
     // try this incase it's a Lambda thing 
     var notes = from d in db.hw_poapp_VoucherDetailNotes_vw 
        where d.trx_ctrl_num == id 
        select d; 

     return View(myList); 

です、各リンクにはノートがあります

私はC#をデバッグすると、結果が期待どおりになりません。 2番目のリスト(または絶望のvarノート)のデバッグ3つの別個の結果が期待されますが、「Note」フィールドが同じで、3つの結果が同じであるために表示されます。 、すなわち3つの結果が、結果の最初の行のすべてです。 「注意」フィールドは固有のデータが含まれている場合、私はこのようになりますためのデータを取得していデバッグ From Debugging code

モデルクラスの画面ダンプの添付JPGを参照してください 予想通り は、その行はリストに入れます

public partial class hw_poapp_VoucherDetailNotes_vw 
{ 
    [Key] 
    [Display(Name = "Voucher No:")] 
    public string trx_ctrl_num { get; set; } 
    [Display(Name = "Voucher Link")] 
    public string invoice_link { get; set; } 
    [Display(Name = "Note:")] 
    public string note { get; set; } 
} 

は私がして、キー値 ので、要約すると、実行しますSQLが正しいデータを選択せず​​に試してみました。 LambdaまたはLINQを使用するかどうかにかかわらず、最初の行は3回繰り返されます。 ビューに不正なデータが正しく表示されます。 喜んでお寄せいただきありがとうございました

+0

ノートのテーブル設定は何ですか?それはトランザクションIDを持っていますか? –

+0

私が見ているビューは単一のテーブルからです。楽しみのためだけに(?)私は\t _SELECT 'VO205164' trx_ctrl_num、 'リンク1' invoice_link、 '' ノート \t組合 \t SELECT 'VO205164' trx_ctrl_num、 'リンク2' invoice_link、 '' ノート \t組合にビューを変更しました \t 'VO205164' trx_ctrl_num、 'link 3' invoice_link、 '' note_を選択してください。結果は同じでした。MVCから生成され、SQLプロファイラを介してキャプチャされ、SQL管理Studioで実行されるSQLは、期待される結果を返しますが、データモデルは最初のリンクを繰り返します。これは古い既存のデータベース –

+0

を参照していますので、ビューをストアドプロシージャに変更しました。これによりデータが正しく取得され、ビューフォームに正しく表示されます。私はVisual Studio 2015を試して更新し、それが変更を行うかどうかを確認します –

答えて

0

OK、それはモデルのエンティティキーまですべてでした。 * .edmxダイアグラムを開き、このビューの3つのフィールドのそれぞれを右クリックし、Entity Keyを選択して一意のキーを作成するように設定しました。私はモデルクラスでこれを行うだろうと思った。私の経験不足。 プロジェクトを再ビルドし、今すぐOKを実行します。この 'Entity Key'は、何らかの形でモデルクラスを変更するものではなく、edmxファイル(表示されます)だけです。しかし、私が持っていた鍵(trx_ctrl_num)は3つのレコードで一意ではなかったので、「混乱している」と思います。 ありがとう

関連する問題