Сначала я использую код EF 4.1 с SQL ce 4.0
У меня есть два класса
public class Customer
{
public int ID { get; set; }
public string CompanyName { get; set; }
public List<ContactPerson> ContactPersons { get; set; }
}
public class ContactPerson
{
public int ID { get; set; }
public string Name { get; set; }
}
и DbContext
public class MyDB : DbContext
{
public DbSet<ContactPerson> ContactPersons { get; set; }
public DbSet<Customer> Customers { get; set; }
public MyDB()
{
this.Configuration.LazyLoadingEnabled = true;
}
protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
modelBuilder.Entity<Customer>()
.HasMany(c => c.ContactPersons)
.WithRequired()
.WillCascadeOnDelete(true);
}
}
В то же время вкод, который мне нужен для обновления всей коллекции ContactPerson клиента.
List<ContactPersons> modifiedContactPersons;
Customer customer = MyDB.Customers.Find(ID);
customer.ContactPersons = modifiedContactPersons;
когда я вызываю MyDB.SaveChanges (), я получаю следующее исключение:
Произошла ошибкапри сохранении сущностей, которые не предоставляют свойства внешнего ключа для своих отношений.Свойство EntityEntries вернет значение NULL, поскольку один объект не может быть определен как источник исключения.Обработка исключений при сохранении может быть упрощена путем предоставления свойств внешнего ключа в типах объектов.Подробности см. В InnerException.
с InnerException:
Отношение из AssociationSet Customer_ContactPersons находится в состоянии «Удалено».Учитывая ограничения множественности, соответствующий «Customer_ContactPersons_Target» должен также находиться в состоянии «Удалено».
Я понимаю, что это означает, но я не могу решить проблему самостоятельно.Есть предложения?