使用实体框架的DbSet访问使用ModelBuilder创建的表

时间:2015-10-15 10:03:18

标签: c# entity-framework

我有以下代码第一个场景:

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访问数据?我已经找到了答案,但我找不到任何答案。我看过很多文章,但似乎没有一篇文章介绍过这种情况。

0 个答案:

没有答案
相关问题