2017-03-21 3 views
0

Ich verwende Dapper FastCRUD zum Einfügen/Aktualisieren für mein Projekt. Ich habe eine Entität, die von einer anderen Entität erbt. Beide haben separate Zieltabellen, die mit TableAttribute annotiert sind. Gibt es eine Möglichkeit, Daten in beiden Tabellen mit Fast CRUD zu speichern, wenn ich ein Objekt vom Typ habe, welches die geerbte Klasse ist?Dapper FastCRUD mit Objektvererbung

Antwort

0

Leider können wir nicht erwarten, dass Dapper FastCRUD oder eine der üblichen Dapper-Erweiterungen die Objektvererbung auf diese Weise behandeln - ich habe mit ein paar und ohne Glück gespielt.

Am besten konnte ich Convert.ChangeType aufrufen, bevor ich an Dapper übergeben, um die angeforderte Operation durchzuführen.

Zum Beispiel möchte ich meine Datenbank-Interaktionen getrennt von meiner Geschäftslogik halten. Die Idee ist, dass ich das ORM leicht gegen ein anderes austauschen kann, ohne in die Nähe meiner Geschäftslogik zu kommen.

public void Create<T>(T bo) where T : BusinessObject 
{ 
    var castedBo = (T)Convert.ChangeType(bo, typeof(T)); 
    Connection.Insert(castedBo); 
} 

Mein Objekt Ich versuche, sich

Table("Blog")] 
public class Blog : BusinessObject { 
... 
} 

Businessobject anhalten und dann kann ich wie mein Objekt bestehen bleiben so

Blog blog = new Blog(); 
dataMapper.Create(Blog) 

hoffe, das hilft!

+0

Dank @Ade. Das Beste, was ich mir vorstellen konnte, war, GetEntityProperties auf der Klasse fastcrud OrmConventions zu überschreiben, um nach Eigenschaften zu filtern, die zu einem bestimmten Typ gehören. Da OrmConventions eine Einstellung auf Anwendungsebene ist, entschied ich mich, das nicht zu verwenden. –