Я новичок в Entity Framework (раньше работал в основном с NHibernate с ActiveRecord), и я застрял с чем-то, что я думаю, должно быть легко ...
У меня есть User
Entity,и создал частичный 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);
некажется хорошим вариантом ...
Я читал о шаблоне репозитория, но я думаю, что это слишком большой пистолет для такой задачи.Пожалуйста, объясните мне, что я делаю не так.Спасибо заранее!
РЕДАКТИРОВАТЬ
Чтобы изобразить, что я хотел бы сделать:
//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
без контекста ...