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;
....

这行不通。在附加语句中,我收到错误:ObjectStateManager 中已存在具有相同键的对象

有人可以解释我吗?

谢谢。

4

1 回答 1

1

第一种方式,你只需找到元素并将其放入矩阵中。但是在第二种方式中,您尝试添加可能已经存在于 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 回答