[英]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.