stackoverflowの新しいユーザーです。これが私の最初の質問です。ルールに違反しないことを願っています:)...
EF4とUnitOfWorkパターンを使用したMVC3プロジェクトでは、
新しいエンティティを追加するときは、新しく追加されたエンティティとデータベースにすでに保存されているエンティティを確認し、新しいエンティティの列を計算する必要があります。
問題は、データベースから値を取得した場合、新しく追加されたエンティティが考慮されないことです。
各エンティティを挿入した後、作業単位を保存することで問題を解決します。ただし、これは、特定のエンティティが挿入されるたびに、コンテキストの現在の状態を保存することを意味します。
これにより、将来的にパフォーマンスの問題が発生するかどうかを知りたいと思います。もしそうなら、問題を解決する他の方法はありますか?
これが問題に関する相対的なコードです(簡略化)
モデル :
public class Group
{
public Guid GroupId { get; set; }
public int Code { get; set; }
}
コントローラー:
UserGroup Group1 = new Group()
{
UserGroupId = Guid.NewGuid(),
Code = (int)Math.Pow(2, (unitOfWork.GroupRepository.Get().Count()));
};
unitOfWork.GroupRepository.Insert(Group1);
UserGroup Group2 = new Group()
{
UserGroupId = Guid.NewGuid(),
Code = (int)Math.Pow(2, (unitOfWork.GroupRepository.Get().Count()));
};
unitOfWork.GroupRepository.Insert(Group2);
挿入メソッド:(すべてのリポジトリパターンを送信しないようにジェネリックリポジトリから派生)
public virtual void Insert(Group grouptoadd)
{
UnitOfWork unitOfWork = new UnitOfWork(Context);
dbSet.Add(grouptoadd);
unitOfWork.Save();
}
UnitOfWorkをGroupRepositoryクラスのInsertメソッド内に保存しない場合、Group2のコードが計算されるときに、Group1が考慮されません。
unitOfWorkをinsertメソッド内に保存するのは正しくないようです。コンテキストから値を取得しようとしました
(int)Math.Pow(2, (Context.Groups.Count()));
このコードは常に1を返します。デバッグモードでコンテキスト内のエンティティを確認できましたが、Countは0を返します。
最後に私は必要です:(新しく追加されたエンティティ+データベースに保存されたエンティティ).Count()