DapperExtensions и Dapper.Contrib со схемой, отличной от dbo

Я использую DapperExtensions v4.0.30319 и пытаюсь сообщить Dapper.Contrib, что моя схема не является DBO. Я предоставил:

public class EngineMapper : ClassMapper<Engine>
{
    public EngineMapper() : base()
    {
        Schema("vehicles");
    }
}

Насколько я понимаю, из документации DapperExtensions (https://github.com/tmsmith/Dapper-Extensions/wiki/Customized-mapping-for-a-class), что этот класс будет автоматически найден с помощью отражения?

Но я также пытался явно использовать:

DapperExtensions.DapperExtensions.DefaultMapper = typeof(EngineMapper);

В любом случае, когда я использую Dapper.Contrib:

SqlConnection.Insert(new Engine());

результирующий оператор вставки не определяет никакой схемы.

Как мне выполнить вставку (или обновление и т. д.) с помощью Dapper.Contrib, где он использует указанную мной схему таблицы?


person Developer Webs    schedule 24.03.2017    source источник


Ответы (2)


Вы можете использовать атрибут Table, чтобы показать имена schema и table вместе с точкой между ними:

using Dapper.Contrib.Extensions;

[Table ("vehicles.YourTables")]
public class YourClass
{
    public int Id { get; set; }
    public string Name { get; set; }
}
person vaheeds    schedule 04.04.2017
comment
Я должен попробовать это. Но я действительно ненавижу загрязнять мои (независимые от базы данных) модели информацией, которая действительно принадлежит уровню базы данных. - person Developer Webs; 18.04.2017
comment
Dapper.Contrib и Dapper Extensions — это две отдельные библиотеки, поэтому подход Classmapper применим только к коду, использующему DapperExtensions. Подход с атрибутами @vaheeds — правильный способ работы с библиотекой Contrib. - person G Davison; 19.04.2017

Мне также нужно было сопоставить класс с пользовательской схемой. Мой проект asp.net core 2.2. Попытался украсить poco атрибутом [Table("schema.Table")], но dapper contrib, похоже, его не подберет. Вот прож. зависимости

введите здесь описание изображения

Однако этот подход сделал свое дело:

введите здесь описание изображения

Посмотрите, поможет ли это.

person mike123    schedule 25.06.2019