Ausgabe
Ich habe folgende Klassen und DbContext
:
public class Order : BaseEntity
{
public Number {get; set;}
}
public class Product : BaseEntity;
{
public Name {get; set;}
}
public class Context : DbContext
{
....
public DbSet<Order> Orders { set; get; }
public DbSet<Product> Products { set; get; }
....
}
Ich habe auch eine Liste von Objekten, die ich zu meinem Kontext hinzufügen möchte, aber ich weiß nicht, wie ich DbSet
dynamisch geeignete generische Objekte für jeden Entitätstyp finden kann.
IList<BaseEntity> list = new List<BaseEntity>();
Order o1 = new Order();
o1.Numner = "Ord1";
list.Add(o1);
Product p1 = new Product();
p1.Name = "Pencil";
list.Add(p1);
Context cntx = new Context();
foreach (BaseEntity entity in list)
{
cntx.Set<?>().Add(entity);
}
Wie kann ich das machen?
Lösung
DbContext
hat eine Methode namens Set
, die Sie verwenden können, um ein nicht generisches zu erhalten DbSet
, wie zum Beispiel:
var someDbSet = this.Set(typeof(SomeEntity));
Also in deinem Fall:
foreach (BaseEntity entity in list)
{
cntx.Set(entity.GetType()).Add(entity);
}
Beantwortet von – Pablo Romeo
Antwort geprüft von – David Marino (FixError Volunteer)