2010-08-14 3 views
0

일대 다 관계를 설정했습니다. (예 : 많은 전화 번호를 가진 사람). 내 쿼리에서 나는 this.ObjectContext.Person.Include("PhoneNumbers")을 가지고 있으며, public EntityCollection<PhoneNumbers> PhoneNumbers{ get; set; }을 포함한 MetaData를 생성했습니다.이 DTO와 다른 속성이 필요합니다.RIA를 사용하여 EntityCollection에 엔터티 삽입

[Include] 
[Association("Name","thisKey","otherKey")] 
public IEnumerable<PhoneNumbers> PNums { get; set; } 

모든 데이터를 검색하여 실버 라이트로 표시 할 수 있지만 새 데이터를 만들면 문제가 발생합니다. TDataSource.SubmitChanges();를 호출 할 때이 오류가 다음

private void Button_Click(object sender, System.Windows.RoutedEventArgs e) 
{ 

    if (dgMMs.SelectedItem != null) 
    { 
     PhoneNumbers wb = new PhoneNumbers(); 
     wb.this = tbThis.Text; 
     wb.that = tbThat.Text; 
     wb.other = tbOther.Text; 
     wb.whatnot = tbwhatnot.Text; 
     ((Person)dgMMs.SelectedItem).PNums.Add(wb); 
    } 
} 

: 나는 계속 이런 종류의 일을 가지고

Message = "Submit operation failed validation. Please inspect Entity.ValidationErrors for each entity in EntitiesInError for more information."

이 좋아, 그래서 나는했고, 확실히 충분히 오류가 있지만, 나는 왜 그런지 이해하지 못한다. 나는 내가 그것을 만들었고 entityCollection에 추가했을 때 설정하지 않은 last_modified_by 필드에 대해 데이터베이스에 nullable이 아닌 필드를 가지고 있는데 이것이 원인 일 것이라고 추측하지만 내 질문은 RIA가 아닌 이유에서 비롯됩니다. 해당 필드를 설정하려고하기 때문에 작성한 서비스에서 Insert 메소드를 호출하십시오. 좋아요 :

public void InsertPhoneNumber(PhoneNumbers pnum) 
{ 
    pnum.last_modified = DateTime.Today; 
    pnum.last_modified_by = Thread.CurrentPrincipal.Identity.Name; 
    if ((pnum.EntityState != EntityState.Detached)) 
    { 
     this.ObjectContext.ObjectStateManager.ChangeObjectState(pnum, EntityState.Added); 
    } 
    else 
    { 
     this.ObjectContext.PhoneNumbers.AddObject(pnum); 
    } 
} 

그러나 RIA가 내 개체를 추가하고 자체 삽입 방법이라고 부르는 것과 같습니다. 그래서 처음에는 압연, 그냥 UI에서 속성을 설정, 그것은 나에게이 오류 줄 것이다 : 나는 아무것도 신원 필드를 설정하지

Message = "Submit operation failed. An error occurred while updating the entries. See the inner exception for details. Inner exception message: Cannot insert explicit value for identity column in table 'iset_trkr_writeback' when IDENTITY_INSERT is set to OFF."

을, 나는 RIA 나를 위해 이런 짓을 했을까 생각 . 하지만 내가 디버그하고 살펴보고, 그것은 0 값을 가지고있다. 하지만 적어도 이번에는 내 서비스에서 내 삽입 메소드를 호출합니다 ... 어쩌면 내 프로세스에서 큰 것을 잃어 버렸을 수도 있지만 실제로 도움을받을 수는 있습니다. 감사합니다 :)

답변

0

당신은 Entity Framework를 사용하고 있습니까? 그렇다면 메타 데이터에서 적어도 하나의 필드에 [Key] 속성이 필요합니다. 또는 ID/PK 열 (int/guid)을 만든 다음 메타 데이터를 업데이트하십시오.

+0

감사합니다. rob, 예, 메타 데이터 새로 고침을 업데이트해야했습니다. 더블 엑스 – Mike