有没有办法使用Dapper的一些.Insert扩展方法将属性映射到列名?

时间:2018-01-23 17:07:44

标签: dapper dapper-contrib

我对这堂课有以下挑战:

Public Class MyClass
    Property Id As Integer
    Property LastName as String
End Class

数据库中的相应数据表具有以下字段:  Id (int, not null)  Last-Name (nvarchar(80),null)

所以我需要将MyClass.LastName映射到MyClasses.Last-Name,并且有一段时间......

当我编写自定义的Insert查询时,一切正常,但我想使用其中一个Dapper扩展包的.Insert语句。

我尝试了Dapper.Contrib,但这忽略了我使用Dapper.FluentMap创建的映射或使用Dapper.SetTypeMap使用Dapper本身的内置方法。

我尝试过Dapper.FastCrud,但我无法弄清楚如何为它配置映射,尽管这个API看起来很有希望。

任何?

1 个答案:

答案 0 :(得分:3)

所以,基本上这里的问题是属性名和列名不同。

您可以通过在SQL查询中为列名提供别名来使用Dapper处理此问题。我猜你已经尝试了这个,因为你说" 我写了一个自定义的插入查询"在你的问题中。

我从未使用过Dapper.Contrib或Dapper.FastCrud;所以我不能对此发表评论。但我认为必须有一种方法将属性映射到那里的列。

无论如何,我使用了DapperExtensions。有了它,您可以map使用各自的属性{<3}}不同的列名称,如下所示:

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();
    }
}

代码示例使用C#。你必须将它翻译成VB.NET。