MVC5模型分组结果不正确

时间:2016-03-31 17:18:54

标签: linq visual-studio-2013 lambda sql-server-2008-r2 asp.net-mvc-5

MVC5内部网站点。一个视图有两个数据集发送到视图。这会正确显示数据。但数据是错误的#39; 这是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);

我可以使用SQL分析器来捕获正在使用的SQL并在SQL管理工作室中运行它以返回结果

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

单个交易附有三个链接,每个链接都有一个注释

当我调试c#时,结果不符合预期。 调试第二个列表(或绝望的var音符)我期待3个不同的结果,但它出现是因为&#39;注意&#39;字段相同,三个结果相同。 即三个结果,但结果的第一行全部。 如果&#39;注意&#39;字段包含唯一数据,然后按预期将行放入列表中 有关调试的屏幕转储,请参阅附带的jpg From Debugging code

模型类我正在获取这样的数据

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会选择正确的数据。 List,无论是使用Lambda还是LINQ,第一行都重复了三次 视图正确显示错误数据。 感激不尽的任何帮助

1 个答案:

答案 0 :(得分:0)

好的,所以这完全取决于模型上的Entity Keys。 我打开* .edmx图并右键单击此视图的三个字段中的每一个,并将它们设置为实体键,勾选以创建唯一键。我认为在模型类中这样做会做到这一点;我缺乏经验。 重新构建项目,现在运行正常。这个&#39;实体密钥&#39;不以任何方式更改模型类,只是edmx文件(它出现)。但是,我想因为我拥有的密钥(trx_ctrl_num)在三条记录中并不是唯一的,所以它得到了混淆&#34;。 感谢