Вопрос по c#, dapper – Как сопоставить столбец идентификаторов, который имеет другое имя, с Dapper?

6

У меня есть база данных со столбцами идентификаторов, такими как BookId, AuthorId и т. Д. Мои файлы кода, однако, просто имеют свойство Id. Я пытаюсь преобразовать части программы, которые используют NHibernate с Dapper, поэтому я пытаюсь устранить необходимость в свойствах Id и BookId. NHibernate имеет встроенную карту идентификации, которая отображает BookId в свойство Id объектов Book и аналогично AuthorId в свойство Id объектов Author.

Есть ли способ сделать это Dapper, кроме предоставления псевдонима столбцу, в запросе sql?

public class Book {
  public int Id { get; set; }
  public string Name { get; set; }
}

public class Author {
  public int Id { get; set; }
  public string Name { get; set; }
}

Пример запроса, который я использую, выглядит следующим образом:

select * from Books b inner join Author a on a.AuthorId = b.AuthorId

Если Dapper не поддерживает это легко, какие-нибудь мысли о том, какие у меня есть варианты?

Я сделал это, используя псевдоним для столбца. Почему вы не хотите использовать псевдоним? LordHits
@LordHits Я пытаюсь избежать этого, потому что у меня есть много столбцов, которые возвращаются. Я бы не хотел явно печатать каждый из них в SQL. Кроме того, я не верю, что это будет работать, как ожидалось, с объединениями таблиц Jim Geurts

Ваш Ответ

1   ответ
16

у пути, и прежде чем мы узнаем, что произошло внезапно, мы утонем в файлах конфигурации. Итак: два варианта:

добавить псевдоним в SQLдобавить прокладку в C #

так что либо (sql):

select BookId as [Id], Name from Books

или (C #):

private int BookId { get { return Id; } set { Id = value; } } // just for dapper

Похожие вопросы