【发布时间】:2016-07-20 06:45:48
【问题描述】:
MVC5 内网站点。一个视图有两个数据集发送到该视图。这将正确显示数据。但数据是“错误的”。 这是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 个不同的结果,但它出现是因为“注释”字段是相同的,三个结果是相同的。 即三个结果,但所有结果的第一行。 如果“注释”字段包含唯一数据,则这些行将按预期放入列表中 有关调试的屏幕转储,请参见附件 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 选择了正确的数据。 列表,无论是使用 Lambda 还是 LINQ,第一行都重复了 3 次 视图正确显示错误数据。 感谢您提供任何帮助
【问题讨论】:
-
笔记的表格设置是什么?它有交易ID吗?
-
我正在查看的视图来自单个表。只是为了好玩(?)我将视图更改为 select 'VO205164' trx_ctrl_num, 'link 1' invoice_link,'' note union select 'VO205164' trx_ctrl_num, 'link 2' invoice_link,'' note union select 'VO205164' trx_ctrl_num, 'link 3' invoice_link,'' 备注。结果是一样的,从MVC生成并通过SQL Profiler捕获并在SQL Management Studio中运行的SQL返回了预期的结果,但是数据模型重复了第一个链接。请注意,这是查看一个旧的现有数据库
-
仅供参考,我将视图更改为存储过程,这样可以正确获取数据并正确显示在视图表单上。我将尝试更新到 Visual Studio 2015,看看是否会有所改变
标签: linq visual-studio-2013 lambda sql-server-2008-r2 asp.net-mvc-5