C# LINQ to Entities无法识别方法'System.Data.Entity.DbSet`1'
正在抛出以下System.NotSupportedException LINQ to Entities无法识别方法“System.Data.Entity.DbSet`1[Ika.Security.Data.Model.CLIENT_REL]SetCLIENT_REL”方法,并且无法将此方法转换为存储表达式C# LINQ to Entities无法识别方法'System.Data.Entity.DbSet`1',c#,linq,C#,Linq,正在抛出以下System.NotSupportedException LINQ to Entities无法识别方法“System.Data.Entity.DbSet`1[Ika.Security.Data.Model.CLIENT_REL]SetCLIENT_REL”方法,并且无法将此方法转换为存储表达式 我做错了什么?我认为您不能像从查询中调用_dataContext.Set那样调用它。LINQ无法将其转换为查询。看起来您正在使用AsEnumerable加载数据集,并在查询中使用该数据集,这是
我做错了什么?我认为您不能像从查询中调用_dataContext.Set那样调用它。LINQ无法将其转换为查询。看起来您正在使用AsEnumerable加载数据集,并在查询中使用该数据集,这是不允许的。您需要重新构造它,或者使它成为两个单独的查询。不幸的是,我不能给你更好的建议,我不完全确定你的查询在做什么,我更熟悉lambda语法。如果你试图连接表,你会希望使用linq连接,而不是where,就像你在写t-sql一样。另外,成本是正确的,您不能使用一个可计算的,因为它需要是可计算的,才能正确转换这是哪一个数据库和数据提供程序?Oracle数据库和Oracle托管访问提供程序’我尝试了lambda,这似乎起到了作用。。。Lambda正在将其转换为内部连接,我想要的是剩下的;完成后将发布等效的lambda查询。。。
var query = from cl in
(
from cl in _dataContext.Set<CLIENT>()
from cr in
_dataContext.Set<CLIENT_REL>()
.Where(m => m.CLIENT_CHILD_ID == cl.CLIENT_ID)
.DefaultIfEmpty()
.AsEnumerable()
select new {cl.CLIENT_ID, cl.CLIENT_NAME, cr.CLIENT_PARENT_ID, cl.CLIENT_CODE, cl.CLIENT_DESCR}
)
from pcl in
_dataContext.Set<CLIENT>().Where(p => p.CLIENT_ID == cl.CLIENT_PARENT_ID).DefaultIfEmpty()
select new ClientDetail
{
ClientId = cl.CLIENT_ID,
ClientName = cl.CLIENT_NAME,
ClientCode = cl.CLIENT_CODE,
ClientDescription = cl.CLIENT_DESCR,
ParentName = pcl.CLIENT_NAME
};