【问题标题】:DapperExtensions and Dapper.Contrib with non-dbo SchemaDapperExtensions 和 Dapper.Contrib 与非 dbo 架构
【发布时间】:2017-03-24 14:09:14
【问题描述】:

我正在使用 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 进行插入(或更新等),它使用我指定的表架构?

【问题讨论】:

    标签: dapper-extensions


    【解决方案1】:

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

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

    【讨论】:

    • 我得试试这个。但我真的很讨厌用真正属于数据库层的信息来污染我的(与数据库无关的)模型。
    • Dapper.Contrib 和 Dapper Extensions 是两个独立的库,因此 Classmapper 方法仅适用于使用 DapperExtensions 的代码。 @vaheeds 属性方法是使用 Contrib 库的正确方法。
    【解决方案2】:

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

    但是这种方法成功了:

    看看有没有帮助。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-07-07
      • 2017-07-14
      • 2023-03-13
      • 2017-08-17
      • 1970-01-01
      • 2010-11-11
      • 2011-06-17
      • 2018-12-27
      相关资源
      最近更新 更多