私はエンティティ・フレームワークを使用しており、ジャンクション・テーブルを使用して多対多のリレーションシップを持っています。私はそれが生成されるべきで理解したようエンティティ・フレームワーク6のデフォルト・ジャンクションtablenameを変更してください
はので、私のコンテキストは次のようになります。
public DbSet<Candidate> Candidates { get; set; }
public DbSet<SkillSet> SkillSets { get; set; }
protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
modelBuilder.Entity<Candidate>().HasMany(t => t.SkillSets).WithMany(t => t.Candidates)
.Map(m =>
{
m.ToTable("candidate_skillset");
m.MapLeftKey("candidate_id");
m.MapRightKey("skillset_id");
});
modelBuilder.Entity<SkillSet>().ToTable("skillset");
modelBuilder.Entity<Candidate>().ToTable("candidate");
}
候補モデル:
namespace CandidateCatalog.Model
{
using System.Collections.Generic;
using System.ComponentModel.DataAnnotations;
using System.ComponentModel.DataAnnotations.Schema;
[Table("candidate")]
public class Candidate
{
#region Simple propertied
[Key]
public int id { get; set; }
[Column("firstname")]
public string Firstname { get; set; }
#endregion
#region reference properties
public int? commendation_id { get; set; }
[ForeignKey("commendation_id")]
public Commendation commendation { get; set; }
public ICollection<SkillSet> SkillSets { get; set; }
#endregion
}
}
スキルセットモデル:
namespace CandidateCatalog.Model
{
using System.Collections.Generic;
using System.ComponentModel.DataAnnotations.Schema;
[Table("skillset")]
public class SkillSet : SimpleDictionary
{
public virtual ICollection<Candidate> Candidates { get; set; }
}
}
エン私はその名前を定義する必要があると推測するので、フレームワークはいくつかのデフォルトジャンクションテーブル名を生成しました。そして、ここに問題があります、どのようにこれを行うことができますか?
編集:
私は流暢なAPIを追加しました。
public ICollection<SkillSet> SkillSets { get; set; }
しかし、私は例えば試してください:それは、プロパティを参照することができます
var ca = this._catalog.Candidates.FirstOrDefault(x => x.id == 125).SkillSets;
をコレクションが満たされることはありませんかのように私は、アイブ氏ダブルチェックDB関係があり、0取得しています。
モデル::あなたが好きFluentAPI使う必要
はこれを見てください[質問](http://stackoverflow.com/questions/14149110 /どのように表現するか - ブリッジ - テーブル - エンティティ - フレームワーク - コード - 最初)。私はそれがあなたを助けるつもりだと思う、それは同じケースだと思う。 –