私は(前のActiveRecordとNHibernateのとほとんど作業)Entity Frameworkのに新たなんだと私は簡単なはずだと思うことを何か、とこだわっている...Entity Frameworkを使用してコンテキスト外のエンティティのプロパティにアクセスする方法
私はUser
エンティティを持っており、部分的User
クラスを作成しましたNHibernateのようないくつかのメソッドを追加することができます。
public static User GetByID(int userID)
{
using (var context = new MyEntities())
{
return context.Users.Where(qq => qq.UserID == userID).Single();
}
}
は今、同じクラスに私はログインの瞬間を記録したい、と私はやろう:私は、簡単にユーザーを取得するためにGetByID
を追加
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's
コンテキストがすでに配置されているアクセスuser.LoginLogs
ので...多分私はここで何かを明らかに不足しているが、同様に常にフルクエリを作成しています:
context.Users.Where(qq => qq.UserID == userID).Single().LoginLogs.Add(log);
D私は良い選択肢のように見えません...
私はリポジトリのパターンについて読んだことがありますが、それはそのような仕事のためには大きすぎると思います。私が間違っていることを教えてください。前もって感謝します!私がやりたいものを画像に
EDIT
:私は、コンテキストなしでpost.Answers
を取得することはできませんので
//somewhere in business logic
var user = User.GetByID(userID);
var posts = user.GetAllPostsForThisMonth();
foreach(var post in posts)
{
Console.WriteLine(post.Answers.Count);
}
通常、私はこれを行うことは許されないよ...
レコードが見つからない場合、GetByIDは例外をスローすることに注意してください。むしろFirstOrDefault()を使用してください。 – Jethro