Есть ли способ сопоставить свойства с именами столбцов, используя какой-то метод расширения.Insert для Dapper?

У меня есть следующий вызов с этим классом:

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.

Я попытался Dapper.Contrib, но это игнорирует отображения, которые я создаю, используя Dapper.FluentMap или используя встроенный метод самого Dapper, используя Dapper.SetTypeMap,

Я попробовал Dapper.FastCrud, но не смог понять, как настроить сопоставления для него, хотя этот API выглядит многообещающим.

Кто-нибудь?

1 ответ

Решение

Таким образом, в основном проблема заключается в том, что имя свойства и имя столбца различаются.

Вы можете справиться с этим с помощью Dapper, предоставив псевдоним для имени столбца в SQL-запросе. Я полагаю, вы уже попробовали это, когда сказали "я пишу пользовательский запрос на вставку" в своем вопросе.

Я никогда не использовал Dapper.Contrib или Dapper.FastCrud; поэтому я не могу комментировать это. Но я думаю, что должен быть способ сопоставить свойства столбцам там.

Во всяком случае, я использовал 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();
    }
}

Пример кода с C#. Вы должны перевести его на VB.NET.

Другие вопросы по тегам