3つのペイロード列を持つ結合テーブル(TableAB)で結合された2つのテーブル(テーブルA、テーブルB)があります。ペイロードでは、Id、TableAId、およびTableBId以外の列を意味します。M:Mマッピング - EF 4.3 CodeFirst(既存のデータベース)
すべてのテーブルに正常に挿入できますが、Insertのペイロードカラムの1つにデータを挿入する必要があります。私はEF 4.3、Fluent APIを使用しています。誰も助けることができますか?前もって感謝します。
public class Organisation : EntityBase<int>, IAggregateRoot
{
public string Name { get; set; }
public string Url { get; set; }
public int CountryId { get; set; }
public int? OwnershipTypeId { get; set; }
public int OrganisationStatusId { get; set; }
public virtual ICollection<Feature> Features { get; set; }
public virtual ICollection<OrganisationType> OrganisationTypes { get; set; }
public virtual ICollection<PricePlan> PricePlans { get; set; }
public virtual ICollection<User> Users { get; set; }
}
public class User: EntityBase<Guid>, IAggregateRoot
{
public string FirstName { get; set; }
public string LastName { get; set; }
public string JobTitle { get; set; }
public int? PhoneCallingCodeId { get; set; }
public int? PhoneAreaCode{ get; set; }
public string PhoneLocal { get; set; }
public int? MobileCallingCodeId { get; set; }
public int? MobileAreaCode { get; set; }
public string MobileLocal { get; set; }
public virtual ICollection<Organisation.Organisation> Organisations { get; set; }
}
public class OrganisationUser : EntityBase<int>, IAggregateRoot
{
public DateTime StartDate { get; set; }
public DateTime? EndDate { get; set; }
public int OrganisationRoleId {get; set;}//Foreign Key - have tried leaving it out, tried it as public virtual Organisation Organisation {get;set;
public bool IsApproved { get; set; }
}
public class SDContext : DbContext
{
public ObjectContext Core
{
get
{
return (this as IObjectContextAdapter).ObjectContext;
}
}
public IDbSet<User> User { get; set; }
public IDbSet<Organisation> Organisation { get; set; }
protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
modelBuilder.Conventions.Remove<PluralizingTableNameConvention>();
modelBuilder.Entity<Organisation>().HasMany(u => u.Users).WithMany(o => o.Organisations).Map(m =>
{
m.MapLeftKey("OrganisationId");
m.MapRightKey("UserId");
m.ToTable("OrganisationUser");
});
//私は、具体的流暢で外部キーを定義しようとしているが、私は本当に私がアクセスしたら、ペイロードプロパティを追加し、それらを編集することができます方法を理解する必要があります。
は、あなたが持っているクラスを示してもらえ(特にでそれらのナビゲーションプロパティ)とFluentマッピング? – Slauma
こんにちは、それは本当に重要ですか? IDのすべてが正しく挿入されるので、テーブルがPOCOで正しくマップされていることがわかります。私は単にペイロード列にアクセスする方法を知らない。私はOrganizationを持っていると言いましょう、私はUser、billing Plansなどを追加していますので、組織にコレクションを追加するためにforeachループでorganisation.Add(エンティティ)を使用して、関連するエンティティを取得します。ペイロード用の結合テーブルにアクセスするにはどうすればいいですか?私は結合用のPOCOクラスを作成しました。 – user1182263
はい、あなたの質問のまわりの長い沈黙が証明されるので、問題ありません。あなたは必要な詳細を提供していないので、今までは答えがありません。最後のステートメントは重要です。結合テーブル用のエンティティがあり、ペイロードカラムを持つでしょうか?問題はどこにありますか?読み込んで変更して保存してください...質問を編集して(質問の下にある "編集"リンク)、もっと情報を追加することができます。 – Slauma