这个项目让我很生气;-)
我正在尝试连接两个表的简单查询
我正在尝试连接两个表的简单查询
存储库类方法
public IQueryable<ADPerson> FindAll(string UserId) { return (from p in db.ADPerson select p); }
在我的控制器中:
var ADPersonList = from o in ADPersonDB.FindAll(GetUserId()) join c in MSDNTypeDB.FindAll(GetUserId()) on o.MsdnTypeId equals c.MsdnTypeId select new ADPerson() { AdPersonId = o.AdPersonId,SamAccountName = o.SamAccountName,Description = o.Description,displayName = o.displayName,UserPrincipalName = o.UserPrincipalName,Enabled = o.Enabled,LastUpdated = o.LastUpdated,OnlineAssetTag = o.OnlineAssetTag,MsdnTypeId = o.MsdnTypeId,MsdnSubscription = c.MsdnTypeDescription,};
我一直收到错误:
{"The specified LINQ expression contains references to queries that are associated with different contexts."}
我还尝试添加到存储库类:
存储库类方法
public IQueryable<ADPerson> FindAll(string UserId) { //return (from p in db.ADPerson // select p); var query = from o in db.ADPerson join c in db.MsdnTypes on o.MsdnTypeId equals c.MsdnTypeId select new ADPerson() { AdPersonId = o.AdPersonId,}; return query; }
是否真的很难在两个表之间进行简单连接并在Entity框架中填充变量
谢谢
解决方法
投射到匿名对象
var query = from o in db.ADPerson join c in db.MsdnTypes on o.MsdnTypeId equals c.MsdnTypeId select new { AdPersonId = o.AdPersonId,SamAccountName = o.SamAccountName,Description = o.Description,displayName = o.displayName,Enabled = o.Enabled,LastUpdated = o.LastUpdated,OnlineAssetTag = o.OnlineAssetTag,MsdnTypeId = o.MsdnTypeId,MsdnSubscription = c.MsdnTypeDescription,};
然后映射回您的实体
foreach (var item in query) { var adPerson = new ADPerson { AdPersonId = item.AdPersonId,SamAccountName = item.SamAccountName,Description = item.Description,displayName = item.displayName,UserPrincipalName = item.UserPrincipalName,Enabled = item.Enabled,LastUpdated = item.LastUpdated,OnlineAssetTag = item.OnlineAssetTag,MsdnTypeId = item.MsdnTypeId,MsdnSubscription = item.MsdnTypeDescription,{ }
原文地址:https://www.jb51.cc/csharp/243084.html
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。