Прекрасный с существующей базой данных и странным соглашением об именах - PullRequest
0 голосов
/ 08 мая 2018

Я использую Asp.net Core 2.0 с Dapper. Мой стол выглядит так:

N_ORDER (ID)
CREATION_DATE
N_STATUS_INT

Итак, мою модель мне нужно было создать, как:

public int N_ORDER { get; set; }
public DateTime CREATION_DATE { get; set;} and etc.

Есть ли способ избежать соглашения об именах в моей модели, как если бы я использовал EF Core с FluentAPI? Так я могу правильно назвать свою модель? э:

        this.Property(c => c.OrderId).HasColumnName("N_ORDER");

Спасибо

Ответы [ 2 ]

0 голосов
/ 09 мая 2018

Решение, предложенное в ответе @DavideMauri, выглядит великолепно. Но я никогда не использовал это.

Вместо этого я всегда использовал псевдонимы столбцов.

Итак, вы пишете SQL примерно так:

SELECT N_ORDER AS OrderId,
CREATION_DATE AS CreationDate,
N_STATUS_INT AS Status
FROM MyTable AS Order
WHERE N_ORDER = 1

Ваш POCO выглядит следующим образом:

public class Order
{
    public int OrderId { get; set; }
    public DateTime CreationDate { get; set;}
    public int Status { get; set; }
}

И вы называете это что-то вроде ниже:

Order order = con.Query<Order>(sql, ......);
0 голосов
/ 09 мая 2018

Да, есть, и эта функция называется «Пользовательское сопоставление».Вкратце, вы можете указать, как сопоставить имена столбцов со свойствами объекта, используя метод SetTypeMap.SetTypeMap нужен объект CustomTypeMapper в качестве параметра.

Если вы можете использовать расширение Dapper, Dapper-FluentMap скрывает всю сложность:

https://github.com/henkmollema/Dapper-FluentMap

Подробнее об обоихварианты в этой статье я написал на эту тему:

https://medium.com/dapper-net/custom-columns-mapping-1cd45dfd51d6

...