实体框架CodeFirst,以编程方式将Dbset添加到DbContext

时间:2016-10-01 08:41:13

标签: entity-framework code-first dbset

如何以编程方式将DbSet添加到我的dbContext类中。 [



        public class MyDBContext : DbContext 
        {
          
            public MyDBContext() : base("MyCon")
            {
               

                Database.SetInitializer<MyDBContext>(new CreateDatabaseIfNotExists<MyDBContext>());

            }
       
//Do this part programatically:
            public DbSet<Admin> Admins { get; set; }        
            public DbSet<MyXosh> MyProperty { get; set; }

        }
&#13;
&#13;
&#13;

] [1]

我想通过((C#Code-DOM))添加我的模型类,当然我做了。但现在我在Context类中创建DbSet属性有问题...

2 个答案:

答案 0 :(得分:1)

是的,我做到了! 这个:https://romiller.com/2012/03/26/dynamically-building-a-model-with-code-first/

而且:Create Table, Run Time using entity framework Code-First

是解决方案。无需直接与 dbSets 发生争执。它只是通过这样做的东西来工作:

  public class MyDBContext : DbContext
{

    public MyDBContext() : base("MyCon")
    {
        Database.SetInitializer<MyDBContext>(new CreateDatabaseIfNotExists<MyDBContext>());
    }
    protected override void OnModelCreating(DbModelBuilder modelBuilder)
    {
        var entityMethod = typeof(DbModelBuilder).GetMethod("Entity");
        var theList = Assembly.GetExecutingAssembly().GetTypes()
                  .Where(t => t.Namespace == "FullDynamicWepApp.Data.Domins")
                  .ToList();
        foreach (var item in theList)
        {
            entityMethod.MakeGenericMethod(item)
                           .Invoke(modelBuilder, new object[] { });
        }
        base.OnModelCreating(modelBuilder);
    }

}

答案 1 :(得分:0)

对于在此处学习的使用 EF Core 的用户:

下面的代码仅适用于具有通用类型的一张表。如果需要更多类型,可以随时将它们传递给构造函数并运行一个循环。

POST