Entity framework 实体框架6.0-方法System.Linq.Queryable.Whewre()的评估需要使用静态字段
我在SharePoint 2013项目中使用Entity Framework 6.0和.NET Framework 4.5,根据特定条件从数据库中的视图获取数据 我的Context.cs文件如下所示:Entity framework 实体框架6.0-方法System.Linq.Queryable.Whewre()的评估需要使用静态字段,entity-framework,linq,entity-framework-6,Entity Framework,Linq,Entity Framework 6,我在SharePoint 2013项目中使用Entity Framework 6.0和.NET Framework 4.5,根据特定条件从数据库中的视图获取数据 我的Context.cs文件如下所示: namespace Clients { using System; using System.Data.Entity; using System.Data.Entity.Infrastructure; public part
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; }
}
}
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; }
}
}
我正在尝试使用以下查询,根据ClientUNumber从该视图获取数据:
string anyValue = "something";
var client = (context.ClientInfo.Where(c => c.ClientUNumber.Trim() == anyValue)).FirstOrDefault();
返回值始终为“null”,但是如果在监视窗口中运行该行代码,则会出现以下错误:
方法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(),但这会从数据库中获取所有记录,我会不断获取评估时间dout。所以我认为这不是正确的方法。PS:该视图有7k条记录
感谢您的帮助 您是否尝试过问题的第一条评论中建议的内容?我认为是.Trim()导致了问题您是否尝试过
c.clientunmember.StartsWith(anyValue)
?然后尝试.FirstOrDefault(c=>c.ClientUNumber.StartsWith(anyValue))
而不是Where().FirstOrDefault()
@BradleyUffner我的解决方案的文件夹中没有任何.suo。甚至与.sln文件不在同一文件夹中。@ThomasSchmidt,删除trim()也不起作用。您是否尝试过问题的第一条注释中建议的方法?我认为是.trim()导致了问题。您是否尝试过c.ClientUNumber.StartsWith(anyValue)
?然后尝试.FirstOrDefault(c=>c.ClientUNumber.StartsWith(anyValue))
而不是Where().FirstOrDefault()
@BradleyUffner我的解决方案的文件夹中没有任何.suo。甚至不在与.sln文件相同的文件夹中。@ThomasSchmidt,删除trim()也不起作用。