这个项目让我很生气;-)
我正在尝试连接两个表的简单查询
我正在尝试连接两个表的简单查询
我有以下内容:
存储库类方法
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,{ }