Używam EF 4.1 najpierw kod SQL CE 4.0EF 4.1 Kod pierwszego SQL CE 4.0 aktualizacja kolekcja wyjątek
mam dwie klasy
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; }
}
i 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);
}
}
W tym samym czasie w kodzie muszę zaktualizować całą kolekcję ContactPerson klienta.
List<ContactPersons> modifiedContactPersons;
Customer customer = MyDB.Customers.Find(ID);
customer.ContactPersons = modifiedContactPersons;
gdy zgłoszę MyDB.SaveChanges() pojawia się następujący wyjątek:
Wystąpił błąd podczas zapisywania podmioty, które nie narażają klucz obcy właściwości ich relacji. Właściwość EntityEntries zwróci wartość null , ponieważ nie można zidentyfikować pojedynczej encji jako źródła wyjątku. Obsługa wyjątków podczas zapisywania może być łatwiejsza dzięki ujawnieniu właściwości klucza obcego w typach jednostek. Szczegółowe informacje można znaleźć w artykule InnerException pod adresem .
z InnerException:
Związek z AssociationSet określenia 'Customer_ContactPersons' jest określenia 'usunięty' stanu. Biorąc pod uwagę ograniczenia wielokrotności, odpowiedni " " Customer_ContactPersons_Target "również musi być w stanie" Usunięte ".
Rozumiem, co to oznacza, ale nie mogę rozwiązać problemu sam. Jakieś sugestie?
Piszesz: "Powinieneś powtórzyć osoby związane z klientem i zmodyfikować swoje dane z nowej listy". Jak zrobić to w najprostszy sposób? – esba