我在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记录。
感谢任何帮助。