实体框架6.0 - 方法评估System.Linq.Queryable.Whewre()需要使用静态字段

时间:2017-10-31 12:57:15

标签: entity-framework linq entity-framework-6

我在SharePoint 2013项目中使用带有.NET framework 4.5的Entity Framework 6.0,以根据特定条件从数据库中的视图中获取数据。

我的Context.cs文件如下所示:

namespace Clients
    {
        using System;
        using System.Data.Entity;
        using System.Data.Entity.Infrastructure;

        public partial class Clients_ReqsEntities : DbContext
        {
            public Clients_ReqsEntities()
                : base("name=Clients_ReqsEntities")
            {
            }

            protected override void OnModelCreating(DbModelBuilder modelBuilder)
            {
                throw new UnintentionalCodeFirstException();
            }

            public virtual DbSet<ClientInfo> ClientInfo { get; set; }
        }
    }

我的ClientInfo.cs文件如下所示:

    namespace Clients
{
    using System;
    using System.Collections.Generic;

    public partial class ClientInfo
    {
        public string ClientTitle { get; set; }
        public string ClientID { get; set; }
        public string ClientUNumber { get; set; }
    }
}

我正在尝试使用此查询从ClientStumber获取此视图中的数据:

 string anyValue = "something"; 
  var client = (context.ClientInfo.Where(c => c.ClientUNumber.Trim() == anyValue)).FirstOrDefault(); 

返回的值始终为“null”,但是如果我在Watch窗口中运行该行代码,则会出现此错误:

  

方法的评估System.Linq.Queryable.Where()需要使用静态字段System.Data.Entity.Core.Objects.ObjectQuery`1 [Clients.ClientInfo] .MergeAsMethod,这在此上下文中不可用。

我也试过使用这个查询:

(from c in context.ClientInfo where c.ClientUNumber.Trim() == anyValue select c).FirstOrDefault();

但是我得到了同样的错误。

有些帖子建议使用ToList(),但这会从数据库中获取所有记录,并且我会不断获得评估超时。所以我不认为这是正确的方法。 PS:视图有7k记录。

感谢任何帮助。

0 个答案:

没有答案