NGrech
NGrech

Reputation: 63

Dynamically select which table to insert data into with entity framework

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

Upvotes: 1

Views: 3390

Answers (2)

Yuliam Chandra
Yuliam Chandra

Reputation: 14640

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);

Upvotes: 1

Sergey Berezovskiy
Sergey Berezovskiy

Reputation: 236328

You can get DbSet by entity type:

var set = db.Set(myObject.GetType());
set.Add(myObject);
db.SaveChanges();

Upvotes: 5

Related Questions