我有以下代码第一个场景:
public class crmContext : DbContext
{
public crmContext() : base("crmContext")
{
} // end crmContext()
public DbSet<Pool> Pools { get; set; }
public DbSet<Center> Centers { get; set; }
// Po DbSet PoolAssignments?
protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
modelBuilder.Conventions.Remove<PluralizingTableNameConvention>();
modelBuilder.Entity<Pool>()
.HasMany(c => c.Centers)
.WithMany(p => p.Pools)
.Map(
m =>
{
m.ToTable("PoolAssignments");
m.MapLeftKey("poolid");
m.MapRightKey("centerid");
});
} // end OnModelCreating()
} // class crmContext
PoolAssignments表由modelBuilder创建,我想以访问池和中心的方式访问它。例如:
crmContext db = new crmContext();
Pool pool db.Pools.Find(id);
PoolAssignment pa = db.PoolAssignments.Find(id);
这种方法的问题是我没有将PoolAssignment定义为类,并且crmContext中没有DbSet PoolAssignments。我认为我不太了解实体框架的这一部分。
如果我定义一个PoolAssignment类(及其导航属性)和一个PoolAssignments DbSet,那么modelBuilder代码就变得不必要了。代码优先将为我生成表。
我只是想了解在这种情况下使用modelBuilder的逻辑。如何访问PoolAssignments表,如果我没有定义类,如何使用Entity Framework访问数据?我已经找到了答案,但我找不到任何答案。我看过很多文章,但似乎没有一篇文章介绍过这种情况。