私はEF 5コードファーストで作成した多対多リレーションシップを持つ2つのエンティティを持っています。これらはサービスとServiceItemです。サービスエンティティにはServiceItemのコレクションが含まれ、ServiceItemにはサービスのコレクションが含まれます。どちらのエンティティにも問題なくデータを作成、変更、保存することができます。 ServiceItemを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を含むサービスアイテムを保存するためのコードを示します。 ServiceItemが適切なコレクションに入っていることを慎重に確認しました。
db.Entry(dbService).State = EntityState.Modified;
db.SaveChanges();
dbServiceオブジェクトはどのような形でも影響を受けていないようです。 ServiceItemはまだ適切なコレクションにありますが、ServiceItemServiceデータベーステーブルは更新されません。どんな助言も大歓迎です。
-お問い合わせ
このような詳細な回答をいただきありがとうございます。あなたは本当に私が明確ではないいくつかのことを理解するのを助け、私の問題を解決しました。 – drobertson
Slauma!あなたは今あなたをどれだけ愛しているのか分かりません。私は驚くほど私が解決するのを助けた私の問題への答えのためにインターネットを精練しています!私はアプリ内でやや切り離されたシナリオで作業しており、あなたの答えを読んで、私は即座にすべての仕事をしたのと同じコンテキストを使用してすべてを行う必要があることを認識しました。ありがとう、ありがとう、ありがとう、ありがとう! –
これはすばらしい答えです。EFの基礎を理解するのに役立ちました。しかし、これをMVC Webアプリケーションのリポジトリパターンにどのように適用すればよいでしょうか? – BeeTee2