2012-12-15 7 views
1

하자 나는이 목록에 'customersFromFile'아래 코드와 C# 엔티티 프레임 워크는

DB

에, 나는 EF는 DB에서 기존의 8000 개 고객을 업데이트 할 것으로 기대 8000 개 고객 11,000 고객이 말을 대신 업데이 트의 삽입하고 고객에게 추가 "및"8000 업데이트 고객 ": 3000이 제대로 인쇄

콘솔을 dB로 왼쪽으로 추가 할 수 있습니다. 3000

그러나 DB에

기존 8000이 성공적으로 업데이트하고 있지만 지금은 총 19,000 고객을

제발 도와주세요.

DEMOEntities context = new DEMOEntities(); 
context.Configuration.AutoDetectChangesEnabled = false; 
context.Configuration.ValidateOnSaveEnabled = false; 

int i = 0; 
foreach (var customerInDB in context.Customers) 
{ 
    //Console.WriteLine("Update customer: " + customerInDB.CustomerID.ToString()); 
    customerInDB.Name = customersFromFile[i].Name; 
    customerInDB.CIC = customersFromFile[i].CIC; 
    customerInDB.IndustryCode = customersFromFile[i].IndustryCode; 
    context.Entry(customerInDB).State = EntityState.Modified; 
    i++; 
} 

Console.WriteLine("Updated customers: " + i.ToString()); 

int j = 0; 
for (; i < customersFromFile.Count; i++) 
{ 
    context.Customers.Add(customersFromFile[i]); 
    j++; 
} 
Console.WriteLine("Added to customer:" + j.ToString());  

Console.WriteLine("Saving changes to customer..."); 
context.SaveChanges(); 

업데이트 2 : 나는 CustomerFromFile 목록을 형성 할 때이 답변 주셔서 감사합니다 톰톰은, 내 실수는 문맥에 고객을 추가 할 수 있습니다. 그것은 발견하는 나에게 시간이 걸렸다이 :(

+0

아, 미안, 어디 그것을 원하기 때문에 당신이 ADD 때문에, 그것은 추가하고 추가되지 않는 이유는 무엇입니까? 질문. 당신이 업데이 트를 확인하려면 , 갱신을 – TomTom

답변

0

이것은 '파일에서 고객이'DB에없는 경우, 당신은 확인해야합니다, 당신은 당신의 고객에 대한 고유 식별자가없는 것처럼. 소리가 두 번째 루프에서

상품을 넣기 전에 (아마 기본적으로 같은 이름, 같은 CIC와 같은 IndustryCode).

+0

을 나는 DB에서 기본 키로 CustomerID를 있나요 동일하지 않습니다 – ngchieu

+0

-..? 당신이 논리적으로 custoemr를 식별 할 방법을 손님 여러분 rnumber을 당신이 추가 때문에 EF가 추가?. – TomTom

관련 문제