Aknittel
NewSellerID는 tblSellers를 조회 한 결과로,이 테이블 (tblSellerListings 및 tblSellers)은"공식적으로 "외래 키 관계로 조인되지 않습니다. 하지만, 모델이나 데이터베이스에 나는 미래에 대한 유지 일부 참조 무결성을합니다. 내 문제가 남아있다 그래서.이 코드와 예외 ({ "이미 추가 된 동일한 키를 가진 항목을 선택합니다."}) 이유는 무엇입니까 , 만약 내가 새로운 ObjectContext와 foreach 루프의 각 반복을 시작하지 않으며 성능에 영향을 미칠 것이라고 생각 SaveChanges와 함께 끝내십시오. 또한, 왜 ORCSolutionsDataService.tblSellerListings (ADO.NET DataServices/WCF 개체입니다 말해 줄 수 하지 LINQ와 같은 엔티티 ??왜이 예외가 발생합니까? {동일한 키가있는 항목이 이미 추가되었습니다. "})
로는 IDisposable, =================== ===========================
// Add listings to previous seller
int NewSellerID = 0;
// Look up existing Seller key using SellerUniqueEBAYID
var qryCurrentSeller = from s in service.tblSellers
where s.SellerEBAYUserID == SellerUserID
select s;
foreach (var s in qryCurrentSeller)
NewSellerID = s.SellerID;
// Save the selected listings for this seller
foreach (DataGridViewRow dgr in dgvRows)
{
ORCSolutionsDataService.tblSellerListings NewSellerListing = new ORCSolutionsDataService.tblSellerListings();
NewSellerListing.ItemID = dgr.Cells["txtSellerItemID"].Value.ToString();
NewSellerListing.Title = dgr.Cells["txtSellerItemTitle"].Value.ToString();
NewSellerListing.CurrentPrice = Convert.ToDecimal(dgr.Cells["txtSellerItemPrice"].Value);
NewSellerListing.QuantitySold = Convert.ToInt32(dgr.Cells["txtSellerItemSold"].Value);
NewSellerListing.EndTime = Convert.ToDateTime(dgr.Cells["txtSellerItemEnds"].Value);
NewSellerListing.CategoryName = dgr.Cells["txtSellerItemCategory"].Value.ToString();
NewSellerListing.ExtendedPrice = Convert.ToDecimal(dgr.Cells["txtExtendedReceipts"].Value);
NewSellerListing.RetrievedDtime = Convert.ToDateTime(dtSellerDataRetrieved.ToString());
NewSellerListing.SellerID = NewSellerID;
service.AddTotblSellerListings(NewSellerListing);
}
service.SaveChanges();
}
캐치 (예외 예) { MessageBox.Show ("새 케이스를 추가 할 수 없습니다. 예외 : "+ ex.Message);
}
NewSellerListing의 기본 키는 무엇입니까? BTW, 당신은 정말 당신이 직접 쿼리에서 그것을 넣을 수 있으며, sellerId를 얻기 위해 첫 번째 foreach 루프가 필요하지 않습니다 : NewSellerID =을 (service.tblSellers에서의 어디에서 s.SellerEBAYUserID == 선택 SellerUserID s.SellerID) 좁은 방 (); // 물론 ID가 발견되지 않으면 처리해야하지만 데이터베이스 시간을 절약 할 수 있습니다. – xandy
호기심 때문에, 왜 qryCurrentSeller에서 foreach var s를 수행하고 NewSellerID에 지속적으로 값을 다시 할당하고 있습니까? NewSellerID는 첫 번째 foreach의 마지막 반복 만 수행합니다. ??? –