使用非 dbo 模式的 DapperExtensions 和 Dapper.Contrib

DapperExtensions and Dapper.Contrib with non-dbo Schema

我正在使用 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) 了解到这个 class 将使用反射自动找到?

但我也尝试明确使用:

DapperExtensions.DapperExtensions.DefaultMapper = typeof(EngineMapper);

无论哪种方式,当我使用 Dapper.Contrib 时:

SqlConnection.Insert(new Engine());

生成的插入语句未指定任何架构。

如何在使用我指定的 table 模式的地方使用 Dapper.Contrib 进行插入(或更新等)?

您可以使用 Table 属性来显示 schematable 名称以及中间的一个点:

using Dapper.Contrib.Extensions;

[Table ("vehicles.YourTables")]
public class YourClass
{
    public int Id { get; set; }
    public string Name { get; set; }
}

我还需要能够将 class 映射到自定义架构。我的项目是 asp.net core 2.2 试图用 [Table("schema.Table")] 属性装饰 poco,但 dapper contrib 似乎不会接受它。这是项目。依赖项

但是这种方法起到了作用:

看看是否有帮助。