2012-05-23 115 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

相關問題