0
我有一種情況,我希望加載正在從數據庫中使用LINQ-to-SQL檢索的用戶的組織屬性(因爲我的using
這裏試圖獲取該屬性後來因爲上下文的連接關閉而失敗)。問題是有時用戶沒有組織。在這種情況下,FetchUserByName
返回null
。不是我想要的。有沒有辦法讓我的工作方式符合我的要求,即返回一個用戶實例,無論他們是否擁有關聯的組織?DataLoadOptions LoadWith當關係爲空時阻止對象加載
private static void EagerLoad(DataContext ctx)
{
var loadOpt = new DataLoadOptions();
loadOpt.LoadWith<User>(u => u.Organization);
ctx.LoadOptions = loadOpt;
}
public User FetchUserByName(string username)
{
User user = null;
using (var ctx = contextManager.GetSingleDataContext())
{
EagerLoad(ctx);
user = ctx.GetTable<User>().SingleOrDefault(u => u.UserName == username && u.IsActive);
}
return user;
}
SO上有幾個線程描述了'LoadWith'如何創建'INNER JOIN',這是造成這個問題的原因。有一些解決方法,如此處所述; http://stackoverflow.com/questions/7639417/entity-framework-and-forced-inner-join –
@RJLohan其實,'LoadWith'創建'INNER JOIN'和'OUTER LEFT JOIN'。但是你的鏈接問題幫助我找到了一些問題,謝謝。 – mlibby