Developer Webs
Developer Webs

Reputation: 1021

DapperExtensions and Dapper.Contrib with non-dbo Schema

I'm using DapperExtensions v4.0.30319 and I'm trying to let Dapper.Contrib know that my schema is not DBO. I have provided:

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

I understand from the DapperExtensions documentation (https://github.com/tmsmith/Dapper-Extensions/wiki/Customized-mapping-for-a-class) that this class will be automatically found using reflection?

But I also tried explicitly using:

DapperExtensions.DapperExtensions.DefaultMapper = typeof(EngineMapper);

Either way when I use Dapper.Contrib's:

SqlConnection.Insert(new Engine());

the resulting insert statement does not specify any schema.

How do I do an insert (or update, etc) using Dapper.Contrib where it uses the table schema which I specify?

Upvotes: 11

Views: 9244

Answers (2)

mike123
mike123

Reputation: 1559

I needed to also be able to map class to the custom schema. My project is asp.net core 2.2 Tried to decorate the poco with the [Table("schema.Table")] attribute, but dapper contrib won't seem to pick it up. Here are the proj. dependencies

enter image description here

However this approach did the trick:

enter image description here

See if that helps.

Upvotes: 0

vaheeds
vaheeds

Reputation: 2903

You can use Table attribute to show schema and table name together with a dot in between:

using Dapper.Contrib.Extensions;

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

Upvotes: 12

Related Questions