イムstackoverflowの中に、新規ユーザーとこれが私の最初の質問ですが、私はすべてのルールを破ることが文句を言わない願っています:)... EF4とUnitOfWorkのパターンと私のMVC3プロジェクトでユニットワークを保存する前にコンテキストからエンティティを取得する方法以前に追加されたエンティティを使用してフィールドを計算するパターン?
、
新しいエンティティIを追加します新しく追加されたエンティティとデータベースにすでに格納されているエンティティをチェックし、新しいエンティティでカラムを計算する必要があります。
問題は、データベースから値を取得した場合、新たに追加されたエンティティが考慮されないことです。
各エンティティの挿入後にユニットワークを保存してこの問題を解決しました。しかし、これは、特定のエンティティが挿入されるたびにコンテキストの現在の状態を保存することを意味します。
今後これがパフォーマンスの問題を引き起こすかどうかを知りたいと思います。もしそうなら、他の方法で問題を解決することができますか?
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は考慮されません。
insertOptWork内にunitOfWorkを保存する方法が正しくないようです。 (新しく追加されたエンティティ:コンテキストから値を取得しようとしました
(int)Math.Pow(2, (Context.Groups.Count()));
このコードは常に私がデバッグモードでコンテキスト内のエンティティを参照してくださいしかし、私が必要とする最後で返します0
を数えることができる1を返します。 +データベースに格納されているエンティティ).Count()
あなたは同時実行の問題を期待してくださいか、なぜあなたは 'unitOfWork.GroupRepository.Get()を呼び出しません。'一度だけして、あなたは新しい 'Group'sを追加するループ内でカウントをインクリメント)(カウント?パフォーマンス上の問題の可能性について質問するとき、この手順で通常どのくらいの 'Group'を追加しますか? – Slauma
この手順では少なくとも現在は同時実行可能性はありません。 5-10グループは、いくつかの他のエンティティに応じて手順で追加されます。 – Azadrum