У меня есть некоторые проблемы с обновлением данных с отношением один ко многим. Вот мой EntityEF для многих Обновление
public class Customer : Entity
{
public Customer()
{
ContactPersons = new List<ContactPerson>();
}
/// <summary>
/// 客户编号
/// </summary>
public string Code { get; set; }
/// <summary>
/// 客户名称
/// </summary>
public string Name { get; set; }
public ICollection<ContactPerson> ContactPersons { get; set; }
}
/// <summary>
/// 联系人实体
/// </summary>
public class ContactPerson : Entity
{
/// <summary>
/// 姓名
/// </summary>
public string FullName { get; set; }
public string Email { get; set; }
public string QQ { get; set; }
public virtual Customer Customer { get; set; }
}
В классе конфигурации, код:
HasMany(f => f.ContactPersons).WithRequired(f => f.Customer).Map(f => f.MapKey("CustomerId")).WillCascadeOnDelete(true);
Я думаю, что отображение является правильным, добавлять или удалять отлично работает, только обновить исключения броска.
«Customer_ContactPersons» в AssociationSet «Удалено». Если существует несколько ограничений, соответствующий «Customer_ContactPersons_Target» также должен быть «Удален».
public void Update(CustomerEditViewModel model)
{
var customerDb = _customerRep.GetAll().NotLazy(f => f.ContactPersons).SingleOrDefault(f => f.Id == model.Id);
//customerDb.ContactPersons.Clear(); can not work either!!
var count = customerDb.ContactPersons.Count;
for (var i = 0; i < count; i++)
{
customerDb.ContactPersons.Remove(customerDb.ContactPersons.ElementAt(i));
count--;
}
_customerRep.Update(customerDb);
}
Я хочу очистить список ContactPersons в Клиента, как на ...
Ошибка на китайском языке: D – Zaki
это означает, что soruce удаляется, цель msut быть deteted тоже ... я думаю .. – Kratos
Вы должны установить или 'true' или' 'false' внутри WillCascadeOnDelete (); «Проверьте документацию для изменения состояний Entities! – Tico