2012-05-23 86 views
0

使用以下代码,我搜索存储库中的特定Matrix,然后将其分配给Shuttle属性。ObjectStateManager中已存在具有相同密钥的对象

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

This works。我尝试另一种选择。使用下面的代码,我准备了一个Matrix对象并尝试将其附加到我的存储库。

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

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

有人可以解释我吗?

谢谢。

回答

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

+0

好的谢谢。我需要练习更多...... – Bronzato

相关问题