Есть ли способ сопоставить свойства с именами столбцов, используя какой-то метод расширения.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.