のは、私はこのコードを持っているとしましょう:Enityフレームワーク4.1 - 1回の旅行データベースの更新
class Score
{
public Update(int score)
{
update score but do not call (context.SaveChanges())
}
}
class Foo
{
public DoSomething(int update)
{
Score score = new Score();
score.Update(2);
SomeObj obj = (select object);
obj.Soo = 3;
context.SaveChanges();
}
}
は、基本的にはそれを動作させるために、私は明示的にメソッドUpdateでのSaveChangesを提供する必要があります。しかし、私は4つのメソッドが並んでいて、34243人のユーザーがデータを更新したいと思っていますが、4つの旅行でそれぞれ1つのセーブを保存することはお勧めできません。
EF4.1では、最後の瞬間にデータベースの更新を遅らせる方法がありますか?または、各メソッドの明示的な保存を余儀なくされていますか?
編集: 説明のため。私は外部メソッドでSaveChangesを呼び出さないようにしましたが、変更が保存される場所は1回だけでした。
私は、実際の例を与える:
public class ScoreService : IScoreService
{
private JamiContext _ctx;
private IRepository<User> _usrRepo;
public ScoreService(IRepository<User> usrRepo)
{
_ctx = new JamiContext();
_usrRepo = usrRepo;
}
public void PostScore(int userId, GlobalSettings gs, string name)
{
User user = _ctx.UserSet.Where(x => x.Id == userId).FirstOrDefault();
if (name == "up")
{
user.Rating = user.Rating + gs.ScoreForLike;
}
else if (name == "down")
{
user.Rating = user.Rating - Math.Abs(gs.ScoreForDislike);
}
}
}
そして今:
public PostRating LikeDislike(User user, int postId, int userId, GlobalSettings set, string name)
{
PostRating model = new PostRating();
var post = (from p in _ctx.PostSet
where p.Id == postId
select p).FirstOrDefault();
if (name == "up")
{
post.Like = post.Like + 1;
model.Rating = post.Like - post.Dislike;
}
else if (name == "down")
{
post.Dislike = post.Dislike + 1;
model.Rating = post.Like - post.Dislike;
}
PostVote pv = new PostVote();
pv.PostId = post.Id;
pv.UserId = user.Id;
_ctx.PostVoteSet.Add(pv);
_scoreSrv.PostScore(userId, set, name);
_ctx.SaveChanges();
return model;
}
を私は道にPostScore
アップデートを延期したい場合なぜあなたはUpdateメソッドで 'SaveChanges'を呼び出しますか?あなたの例は非常に不明です。 –
なぜ私は 'context.saveChanges())を呼び出さない'と書いたのですか?( –