LINQ-to-SQLを使用してDBから取得するユーザーの組織プロパティを熱心にロードしたい状況があります(using
コンテキストの接続が閉じているため、後でプロパティを取得しようとして失敗するため)。問題は、ユーザーが組織を持っていない場合があることです。その場合はをFetchUserByName
返しますnull
。私が欲しいものではありません。これを私が望むように機能させる方法はありますか?それは、関連付けられた組織があるかどうかに関係なく、ユーザーのインスタンスを返すことです。
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;
}