estoy usando EF 4,1 código primero con SQL CE 4.0EF 4,1 código-I dC SQL 4.0 actualización de la colección excepción
que tienen dos clases
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; }
}
y una 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);
}
}
Al mismo tiempo en el código, necesito actualizar toda la colección de ContactPerson de un cliente.
List<ContactPersons> modifiedContactPersons;
Customer customer = MyDB.Customers.Find(ID);
customer.ContactPersons = modifiedContactPersons;
cuando me llaman MyDB.SaveChanges() me sale el siguiente excepción:
Se ha producido un error al guardar las entidades que no expongan extranjeros clave propiedades de sus relaciones. La propiedad EntityEntries será return null porque no se puede identificar una sola entidad como fuente de la excepción. El manejo de excepciones mientras se guarda puede hacerse más fácil al al exponer propiedades de clave foránea en sus tipos de entidad. Vea la InnerException para más detalles.
con InnerException:
Una relación de AssociationSet los 'Customer_ContactPersons' está en el estado 'Borrada'. Dadas las restricciones de multiplicidad, un correspondiente 'Customer_ContactPersons_Target' también debe estar en estado 'Eliminado'.
Entiendo lo que esto implica pero no puedo resolver el problema yo solo. ¿Alguna sugerencia?
Escribe: "Debe repetir las personas relacionadas con el cliente y modificar sus datos de una nueva lista". ¿Cómo hago eso de la manera más simple? – esba