我新的實體框架(與NHibernate用ActiveRecord之前大部分的工作),我被卡住的東西,我認爲應該很容易......如何使用Entity Framework訪問上下文之外的實體屬性?
我有一個User
實體,創造局部User
類所以我可以添加一些方法(比如NHibernate)。我加GetByID
,使用戶獲得更輕鬆:
public static User GetByID(int userID)
{
using (var context = new MyEntities())
{
return context.Users.Where(qq => qq.UserID == userID).Single();
}
}
現在在同一個班我想登錄登錄的時刻,我嘗試做:
public static void LogLoginInfo(int userID)
{
using (var context = new MyEntities())
{
var user = User.GetByID(userID);
var log = new LoginLog { Date = DateTime.Now };
user.LoginLogs.Add(log);
context.SaveChanges();
}
}
的問題是我不能訪問user.LoginLogs
因爲user's
上下文已經佈置......最有可能的,我缺少明顯的東西在這裏,但創造總是充滿查詢:
context.Users.Where(qq => qq.UserID == userID).Single().LoginLogs.Add(log);
d似乎不是一個好選擇...
我已經閱讀了關於Repository模式,但我認爲這對於這樣的任務來說太大了。請解釋我做錯了什麼。提前致謝!
編輯
要想象我想做什麼:
//somewhere in business logic
var user = User.GetByID(userID);
var posts = user.GetAllPostsForThisMonth();
foreach(var post in posts)
{
Console.WriteLine(post.Answers.Count);
}
通常情況下我不能這樣做,因爲我不能讓post.Answers
沒有上下文...
請注意,如果找不到記錄,GetByID將引發異常。而是使用FirstOrDefault(); – Jethro