Ich versuche, eine generische CRUD für mein Projekt zu machen. Ich habe jedoch DataBaseFirst verwendet und sehe keine generische Entity-Klasse, die vererbt werden kann. Nun, es macht nicht den geringsten Sinn, schließlich, wenn ich die Bank upgrade, müsste es in alle mehr als 60 Klassen der Tabellen gehen und die Vererbung wieder hinzufügen. Ich möchte die Entity-Klassen, die die Entity Framawork erzeugt, rein, wie sie erzeugt wurden.Generische CRUD in Entity Framework mit einer Entität nicht angegeben
Also versuche ich, so etwas wie:
public class DaoEF<TEntity> : IDaoEF<TEntity>
where TEntity : class
{
public GPSdEntities _dbContext { get; set; } = new GPSdEntities();
public async Task<TEntity> GetById(int id)
{
return await _dbContext.Set<TEntity>()
.AsNoTracking()
.FirstOrDefaultAsync(e => e.Id == id);
}
Aber wie Sie ableiten kann ich dieses Problem über die Eigenschaft nicht definiert ist, da wie gesagt, ich habe nichts haben wollen wie ein " Allgemeine Entität ".
Weiß jemand irgendwie ich kann das tun? Vielleicht hat es eine Klasse, die Entity standardmäßig verwendet, die in der Where-Einschränkung verwendet werden kann. Oder vielleicht, wenn ich statt Generics Reflection benutzte? Irgendeine Idee?
Sie könnten vielleicht tun '' ((dynamisch) e) .Id == id'' –
Oder verwenden Sie die 'Find' Methode:' _dbContext.Set() .AsNoTracking(). Finden (id) '(wenn es mit AsNoTracking ...) –
DavidG
Also danke für Sie antwortet RandRandom und DavidG !!! Es ist mein Problem zu lösen. – AlamEstudent