簡體   English   中英

帶RIA的Entity插入EntityCollection

[英]Insert Entity into EntityCollection w/ RIA

我已經建立了一對多的關系。 (例如,一個擁有許多電話號碼的人)。 在我的get查詢中,我有this.ObjectContext.Person.Include("PhoneNumbers")和在生成的MetaData中,包括public EntityCollection<PhoneNumbers> PhoneNumbers{ get; set; } public EntityCollection<PhoneNumbers> PhoneNumbers{ get; set; } public EntityCollection<PhoneNumbers> PhoneNumbers{ get; set; }我還設置了這樣的DTO和其他屬性,我需要。

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

我可以檢索所有數據,並在Silverlight中顯示它們,但是當我創建一個新數據時,我遇到了問題。 我發生了這種事情:

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);
   }
}

然后我在調用TDataSource.SubmitChanges();時收到此錯誤TDataSource.SubmitChanges();

Message =“提交操作驗證失敗。請檢查EntitiesInError中每個實體的Entity.ValidationErrors以獲取更多信息。”

好了,所以我做到了,而且肯定有錯誤,但是我不太明白為什么會這樣。 我在數據庫中有一個last_modified_by字段,當我創建該字段並將其添加到EntityCollection時未設置該字段,因此不能為空,我想這可能是導致該錯誤的原因,但是我的問題來自於為什么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添加我的對象並調用它自己的Insert方法一樣。 所以我首先使用它,然后在UI中設置該屬性,然后會出現此錯誤:

消息=“提交操作失敗。更新條目時發生錯誤。有關詳細信息,請參見內部異常。內部異常消息:當IDENTITY_INSERT設置為OFF時,無法在表'iset_trkr_writeback'中為標識列插入顯式值。”

我從未將身份字段設置為任何內容,我認為RIA會為我完成此操作。 但是,當我調試並查看時,其值為0。 但是至少這一次它在我的服務中調用了我的insert方法...也許我的過程中缺少很多東西,但是我確實可以使用一些幫助。 謝謝:)

您使用實體框架嗎? 如果是這樣,則需要在元數據中至少一個字段上具有[Key]屬性。 或創建一個標識/ PK列(int / guid),然后更新元數據。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM