簡體   English   中英

實體框架通用存儲庫-外鍵異常更新實體關系

[英]Entity framework generic repository - Foreign key exception updating entity relationship

我遵循了我在Julie Lermans的《 Programming Entity Framework:Dbcontext》一書中讀到的EF存儲庫模式。

我有一個名為“客戶”的實體,它與“實體收藏夾”有多對多關系

這是一些更新客戶的示例代碼

customer.CustomerLocation_ID = 5;     

customer.Favourites.clear();

customer.State = State.Modified;
customerRepository.InsertOrUpdate(customer);

然后,Insert將執行以下操作:

Entry(entity).State = EntityState.Modified;

foreach (var entity in this.ChangeTracker.Entries<IEntityState>())
{
    IEntityState stateInfo = entity.Entity;
    entity.State = StateHelpers.ConvertState(stateInfo.State);
}

然后最后:

context.SaveChanges();

保存時,由於“收藏夾”名稱是唯一的,因此我在“收藏夾”上遇到了唯一的關鍵異常。 但我沒有在“收藏夾”中添加任何內容。

當我刪除.clear()行時,一切都可以保存。

更新:

我在這段代碼中添加了一些嘗試,現在就可以了。

foreach (var fav in customer.Favourites)
{
     fav.State = State.Modified;
}

這是否意味着即使我影響客戶,我仍需要將收藏夾標記為已修改,以便對其進行跟蹤和更新? 我只是沒想到我會這樣做。

如果您使用的是Entity Framework,它應該像這樣簡單:

using(var myContext = new MySiteDbContextClassName())
{
     var selectedCustomer = myContext.Customers.FirstOrDefault(x => x.CustomerId == someCustomerId);

     if(selectedCustomer != null)
     {
          selectedCustomer.Favorites.Clear();
          myContext.SaveChanges();
     }
}

如果這不起作用,則聽起來好像您的配置/映射有誤,您需要檢出配置。

暫無
暫無

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

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