Le Dapper.FastCrud utilise l'argument de type générique pour les méthodes Insert
/ Update
. Cela fonctionne bien lorsque les types d'entité sont connus au moment de la compilation. Cependant, lorsque les types d'entité ne sont pas connus au moment de la compilation, il semble qu'il n'y ait aucun moyen d'utiliser Dapper.FastCrud pour Insert
/ mettre à Update
ces entités. Par exemple:
object person = new PersonEntity();
connnection.Insert(person);
Cela ne fonctionne pas malgré l' PersonEntity
mappages PersonEntity
avec OrmConfiguration
.
Des idées sur la façon d'activer de tels scénarios? Existe-t-il des versions non génériques disponibles pour les méthodes d' Insert
/ Update
?
Les extensions de Dapper (ou généralement n'importe quel ORM) prennent en charge la génération de requêtes automatiques. Pour ce faire, ils doivent connaître le nom de la table par rapport à laquelle la requête doit être générée. Ils le savent en examinant le type générique d'entité transmise et en le reliant à la cartographie effectuée.
Vous essayez d'insérer un type d' object
. Il n'y a aucun moyen pour ORM de savoir pour quelle table la requête doit être générée. C'est pourquoi, ce que vous essayez de faire n'est pas possible.
Cela ne fonctionne pas malgré l'
PersonEntity
mappagesPersonEntity
avecOrmConfiguration
Encore une fois, il n'y a aucun moyen pour ORM de savoir que votre object
est PersonEntity
. Vous avez mappé PersonEntity
et transmis un object
.
Pour y arriver, lancez un object
avec l'entité exacte:
connnection.Insert(person as PersonEntity);
Pendant l' Insert
, votre code sait ce que vous insérez. Une simple conversion vers un type spécifique devrait résoudre le problème.
Comme mentionné dans le document , vous pouvez utiliser la fonctionnalité d'outil SQL Builder. Je n'ai jamais utilisé la boîte à outils, donc je ne sais pas si cela vous aidera; suggérant simplement de regarder la documentation.
Un générateur SQL utile et un formateur d'instructions qui peuvent être utilisés même si vous n'avez pas besoin des fonctionnalités CRUD de cette bibliothèque.