为什么C#linq to sql会返回相同的确切记录

时间:2017-05-31 21:11:13

标签: c# sql-server entity-framework linq ef-code-first

所以我有这个实体框架查询,其中我可以在sql server SELECT中复制和运行的ctx.MainOrders语句返回2个非常不同的记录。

然而,当我使用.AsEnumerable().Select(z => new MainOrder()运行此LINQ查询时,我得到两次EXACT SAME记录! :/

这个类是POCO

 public class MainOrder

这是我的查询

public List<MainOrder> GetMainOrder(string hashString)
    {
        try
        {
            using (var ctx = new ClearContext())
            {
                    var query = ctx.MainOrders
                       .Where(z => z.MainId == queryHashMain)
                       .AsEnumerable()
                       .Select(z => new MainOrder()
                       {
                           Email = z.Email,
                           AuthorizationFirstName = z.AuthorizationFirstName,
                           AuthorizationLastName = z.AuthorizationLastName,
                           Btn = z.Btn,
                           AccountNumber = z.AccountNumber,
                           UtilityTypeName = z.UtilityTypeName
                       }).ToList();
                    return query;



                return new List<MainOrder>();

            }
        }

1 个答案:

答案 0 :(得分:0)

在你的评论中你提到了一个视图,这是我打赌的问题。

  

ctx.Mainorders查询将在sql server中显示2条记录,因为它是一个View in MainId

为方法

添加方法AsNoTracking
var query = ctx.MainOrders.AsNoTracking()