[FIXED] Finden Sie ein bestimmtes generisches DBSet in einem dbContext dynamisch, wenn ich eine Entität habe

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 DbSetdynamisch 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

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

0 Shares:
Leave a Reply

Your email address will not be published. Required fields are marked *

You May Also Like