EF5コードファーストで作成したかなり標準的な多対多の関係を持つ2つのエンティティがあります。これらはServiceとServiceItemです。ServiceエンティティにはServiceItemのコレクションが含まれ、ServiceItemにはServicesのコレクションが含まれます。どちらのエンティティの基本プロパティにも問題なくデータを作成、変更、保存できます。ServiceItemをServiceに、またはServiceをServiceItemに追加しようとすると、機能しているように見えますが、何も保存されません。クロスキーを持つServiceItemServiceテーブルを含め、すべての適切なデータベーステーブルが作成されていることを確認しました。アイテムを追加しても、データベースのServiceItemServiceテーブルにエントリがありません。エラーはなく、他のすべては完全に機能しているようです。
私は少し困惑していて、助けを借りることができます。以下はクラスです。
サービスクラス。
public class Service
{
//Default constructor
public Service()
{
//Defaults
IsActive = true;
ServicePeriod = ServicePeriodType.Monthly;
ServicePeriodDays = 0;
ServiceItems = new Collection<ServiceItem>();
}
public int ServiceID { get; set; }
public string Title { get; set; }
public string Description { get; set; }
public ICollection<ServiceItem> ServiceItems { get; set; }
public string TermsOfService { get; set; }
public ServicePeriodType ServicePeriod { get; set; }
public int ServicePeriodDays { get; set; }
public bool IsActive { get; set; }
}
ServiceItemクラス。
public class ServiceItem
{
public ServiceItem()
{
IsActive = true;
}
public int ServiceItemID { get; set; }
public string Title { get; set; }
public string Description { get; set; }
public ICollection<Service> Services { get; set; }
public string UserRole { get; set; }
public bool IsActive { get; set; }
}
これは、この問題をデバッグしようとしたときに行ったFluentマッピングです。このマッピングを追加する前後で同じ問題が発生しました。
public DbSet<Service> Services { get; set; }
public DbSet<ServiceItem> ServiceItems { get; set; }
protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
modelBuilder.Entity<Service>()
.HasMany(p => p.ServiceItems)
.WithMany(r => r.Services)
.Map(mc =>
{
mc.MapLeftKey("ServiceItemID");
mc.MapRightKey("ServiceID");
mc.ToTable("ServiceItemService");
});
}
これは、Service.ServiceItemsコレクションに2〜3個のServiceItemを含むServiceアイテムを保存するために使用するコードです。ServiceItemが適切なコレクションに含まれていることを注意深く確認しました。
db.Entry(dbService).State = EntityState.Modified;
db.SaveChanges();
dbServiceオブジェクトは影響を受けていないようです。ServiceItemsは引き続き適切なコレクションにありますが、ServiceItemServiceデータベーステーブルは更新されません。どんなアドバイスでも大歓迎です。
-ありがとう