我正在做代碼第一個實體框架數據庫模型,而我正在拼湊級聯刪除。有我的簡單類:設置爲默認,而不是刪除級聯
public class User {
[Key()]
public int Id {get; set;}
public string Name {get; set;}
public int CampaignId {get; set;}
[ForeignKey("CampaignId")]
public virtual Campaign Campaign {get; set;}
}
public class Campaign {
[Key()]
public int Id {get; set;}
public string Description {get; set;}
public virtual List<User> Users {get; set;}
public Campaign() {
Users = new List<User>();
}
}
基本的想法是分配一個活動給每個用戶。當我刪除用戶分配的廣告系列時:
internal static void DeleteCampaign(Campaign campaignToDelete) {
using (var context = new DatabaseContext()) {
context.Entry(campaignToDelete).State = EntityState.Deleted;
context.SaveChanges();
}
}
分配給該廣告系列的用戶也被刪除。我想要的是不刪除用戶,但將其分配到第一個可用的廣告系列,或者爲空。出於某種原因,我不能做這樣的事情:
internal static void DeleteCampaign(Campaign campaignToDelete) {
using (var context = new DatabaseContext()) {
for (int i = 0; i < campaignToDelete.Users.Count; i++) {
campaignToDelete.Users[i].Campaign = context.Campaigns.ElementAt(0);
}
context.Entry(campaignToDelete).State = System.Data.Entity.EntityState.Deleted;
context.SaveChanges();
}
}
因爲我得到錯誤:
An unhandled exception of type 'System.ObjectDisposedException' occurred in EntityFramework.dll
Additional information: The ObjectContext instance has been disposed and can no longer be used for operations that require a connection.
所以,我怎麼能避免呢?
你是否啓用了延遲加載? – Coding