0
我的模型...(fyi「應用程序」在工作申請中和「管理員」在一個人中已分配給該應用程序的責任)多對多EF6查詢...嘗試獲取屬於實體A的實體B幷包含所有實體作爲
public class Application
{
public int Id { get; set; }
public string Title { get; set; }
public ICollection<Administrator> Administrators { get; set; }
}
public class Administrator
{
public int Id { get; set; }
public string Username { get; set; }
public ICollection<Application> Applications { get; set; }
}
注意多到任何應用程序和管理人員之間的關係。
其內部網應用程序和用戶(誰也將是一個或多個應用程序管理員)將被識別使用Windows身份驗證。我想返回JSON,僅針對用戶是管理員的應用程序,但也包括e這些應用程序的所有管理員。例如,John創建了一個名爲「兒科診所護士從業人員」的新應用程序,該應用程序使約翰自動成爲該應用程序的管理員,但約翰還分配了貝蒂作爲該應用程序的管理員。貝蒂不是任何其他應用程序的管理員。她應該得到名爲「兒科診所護士從業人員」的應用程序對象,以及該應用程序的兩名管理員(約翰和貝蒂)。
這工作,但包括所有不限於貝蒂的應用...
context.Applications.Include("Administrators").ToList();
這些工作,但顯然不是我想要的......
context.Administrators.Include("Applications").ToList();
context.Applications.Include("Administrators").Where(a => a.Id.Equals(1)).ToList();
context.Administrators.ToList();
context.Administrators.Find(1);
這不工作...
context.Applications.Include("Administrators").Where(a => a.Administrators.Contains(context.Administrators.First())).ToList();
Get ...
An exception of type 'System.NotSupportedException' occurred in EntityFramework.SqlServer.dll but was not handled in user code
Additional information: The method 'First' can only be used as a final query operation. Consider using the method 'FirstOrDefault' in this instance instead.
這不工作...
context.Administrators.Find(1).Applications.ToList();
得到...
An exception of type 'System.ArgumentNullException' occurred in System.Core.dll but was not handled in user code
Additional information: Value cannot be null.
雖然我知道ID爲管理員= 1有2個應用程序。
這工作...
(from app in context.Applications
from admin in app.Administrators
where admin.Username == 「John"
select app).ToList();
但不包括管理員,如果我加入一個這樣的包括()子句...
(from app in context.Applications
from admin in app.Administrators
where admin.Username == 「John"
select app).Include(「Administrators」).ToList();
這是行不通的。
無法弄清楚。任何幫助將非常感激。謝謝。