Dynamically select which table to insert data into

2019-08-08 07:00发布

So I am writing an application which need to select an entity at run time and add through the entity framework save this to a database, I have created the database and a model based off it through the use of an ADO.NET Entity Data model, the objects, which hold the data are chosen baised on the data that is being added at runtime with the use of the reflection class, as follows;

                mytype = Type.GetType(objName);
                myObject = Activator.CreateInstance(mytype);

How can I do something like this to select the entity to use, is can i do something like this:

                db.[MyEntity].Add(myObject);
                db.SaveChanges();

Thanks

2条回答
成全新的幸福
2楼-- · 2019-08-08 07:30

You can get DbSet by entity type:

var set = db.Set(myObject.GetType());
set.Add(myObject);
db.SaveChanges();
查看更多
我欲成王,谁敢阻挡
3楼-- · 2019-08-08 07:54

You can use generic Set and create a generic method.

public static class MyLibrary
{
    public static void Add<T>(this DbContext db, T obj) where T : class
    {
        db.Set<T>().Add(obj);
    }
}

Usage.

db.Add(myObject);
查看更多
登录 后发表回答