2012-02-25 2 views
6

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

Есть ли способ сделать это 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 

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

+0

Я сделал это, используя псевдоним для столбца. Почему вы не хотите использовать псевдоним? – LordHits

+0

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

ответ

15

По дизайну, dapper не имеет слоя отображения. Один шаг вниз по этой дороге, и прежде чем мы узнаем, что произошло внезапно, мы будем тонуть в файлах конфигурации. Итак: два варианта:

  • добавить псевдоним в SQL
  • добавить шайбу в C#

так либо (SQL):

select BookId as [Id], Name from Books 

или (C#):

private int BookId { get { return Id; } set { Id = value; } } // just for dapper 
Смежные вопросы