Dab*_*rnl 2 dapper dapper-extensions dapper-fastcrud dapper-contrib
我在这门课上遇到了以下挑战:
Public Class MyClass
Property Id As Integer
Property LastName as String
End Class
Run Code Online (Sandbox Code Playgroud)
数据库中对应的数据表有如下字段:
Id (int, not null)
Last-Name (nvarchar(80),null)
所以我需要映射MyClass.LastName到MyClasses.Last-Name并度过一段地狱般的时光......
当我编写自定义插入查询时,一切正常,但我想使用 Dapper 扩展包之一的 .Insert 语句。
我尝试过 Dapper.Contrib,但这会忽略我使用 Dapper.FluentMap 或使用 Dapper 本身的内置方法创建的映射Dapper.SetTypeMap。
我尝试了 Dapper.FastCrud,但我无法弄清楚如何为其配置映射,尽管这个 API 看起来很有前途。
任何人?
所以,基本上这里的问题是属性名和列名不同。
使用Dapper,您可以通过为 SQL 查询中的列名提供别名来处理此问题。我猜你已经尝试过这个,因为你在你的问题中说“我写了一个自定义插入查询”。此处讨论了将列名与属性映射的其他多种方法。
使用DapperExtensions,您可以将不同的列名称与其各自的属性进行映射,如下所示:
public sealed class MyClassMapper : ClassMapper<MyClass>
{
public MyClassMapper()
{
Table("MyTable");
Map(x => x.Id).Key(KeyType.WhatYouWant);
Map(x => x.LastName).Column("Last-Name");
AutoMap();
}
}
Run Code Online (Sandbox Code Playgroud)
代码示例使用 C#。您必须将其转换为 VB.NET。
使用Dapper.Contrib,您可以使用[Table]属性装饰类以映射表名。或者,您可以使用SqlMapperExtensions.TableNameMapper映射表。有关更多详细信息,请参阅此博客文章或此和此以及此SO 文章。
显然,有没有办法来映射列名。此功能计划用于下一个主要 (2.x) 版本。2.x版本发布;但问题仍然存在。查看发行说明,功能尚未添加。
随着Dapper.FastCrud,有多种方式进行映射。您可以使用[Column]属性装饰该属性。
| 归档时间: |
|
| 查看次数: |
2599 次 |
| 最近记录: |