SQL ce 4.0で最初にEF 4.1コードを使用しています
私は2つのクラスを持っています
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);
}
}
同時に、コード内で Customer の ContactPerson のコレクション全体を更新する必要があります。
List<ContactPersons> modifiedContactPersons;
Customer customer = MyDB.Customers.Find(ID);
customer.ContactPersons = modifiedContactPersons;
MyDB.SaveChanges() を呼び出すと、次の例外が発生します。
リレーションシップの外部キー プロパティを公開しないエンティティの保存中にエラーが発生しました。単一のエンティティを例外のソースとして識別できないため、EntityEntries プロパティは null を返します。保存中の例外の処理は、エンティティ タイプで外部キー プロパティを公開することで簡単に行うことができます。詳細については、InnerException を参照してください。
内部例外あり:
「Customer_ContactPersons」AssociationSet からの関係は「削除済み」状態です。多重度の制約がある場合、対応する「Customer_ContactPersons_Target」も「削除済み」状態でなければなりません。
これが意味することは理解できますが、自分で問題を解決することはできません。助言がありますか?