0

次のコードを使用して、リポジトリで特定のMatrixを検索し、それをShuttleプロパティに割り当てます。

var requestRepository = unitOfWork.Create<Request>();
var matrixRepository = unitOfWork.Create<Matrix>();
...
var matrix = matrixRepository.Find(m => m.MatrixID == matrixID).FirstOrDefault();
request.Shuttle = matrix;
....

これは機能します。別の方法を試します。次のコードを使用して、Matrixオブジェクトを準備し、リポジトリにアタッチしようとします。

var requestRepository = unitOfWork.Create<Request>();
var matrixRepository = unitOfWork.Create<Matrix>();
...
var matrix = new Matrix { MatrixID = matrixID };
matrixRepository.Attach(matrix);
request.Shuttle = matrix;
....

これは機能しません。attachステートメントで、エラーが発生しました。同じキーを持つオブジェクトがObjectStateManagerにすでに存在します。

誰かが私を説明できますか?

ありがとう。

4

1 に答える 1

1

最初の方法では、要素を見つけてそれを行列に入れます。しかし、2番目の方法では、matrixRepositoryにすでに存在する可能性のあるマトリックスを追加しようとします。

編集

var matrix = matrixRepository.Find(m => m.MatrixID == matrixID).FirstOrDefault();

これは、デフォルトを返さない場合、matrixIDがmatrixRepositoryにある可能性があることを示しています。

しかし、ここで

var matrix = new Matrix { MatrixID = matrixID };
matrixRepository.Attach(matrix); //if matrixRepository allready have matrix with matrixID  you will get error

matrixRepositoryに追加するだけです

于 2012-05-23T11:56:21.353 に答える