2010-09-11 2 views
1

Я начинаю разрабатывать с помощью Fluent NHiberate, и мне было интересно, как я создаю определенные отношения «Foreign Key» в моем классе Mapping.Fluent NHibernate: как сопоставить столбец «Foreign Key» в классе сопоставления

Вот мой класс. Эти классы являются взаимно однозначными со связанными таблицами.

public class Song 
{ 
    public virtual int SongID{ get; private set; } //Primary Key 
    public virtual int SongArtistID { get; set; } //Foreign Key mapping to 'Artist.ArtistID' 
    public virtual string Title { get; set; } 
} 

public class Artist 
{ 
    public virtual int ArtistID{ get; private set; } //Primary Key 
    public virtual int ArtistName{ get; set; } 
} 

public class SongMapping : ClassMap<Song> 
{ 
    SongMapping() 
    { 
     Id(c => c.SongID);//.GeneratedBy.HiLo("sermon"); is HiLo generator good? 
     Map(c => c.SermonArtistID).Not.Nullable(); //How is this mapped to 'Artist.ArtistID'?? 
     Map(c => c.Title).Not.Nullable().Length(50); 
    } 
} 

В моем файле отображение, я хочу, чтобы создать определенное отношение внешнего ключа в моем классе Song колонке SongArtistID, которая будет определять внешний ключ к колонку ArtistID в названии таблицы/классе.

ответ

7

Здесь вы идете:

public class Song 
{ 
    public virtual int Id { get; private set; } 
    public virtual Artist Artist { get; set; } 
    public virtual string Title { get; set; } 

    public class SongMap : ClassMap<Song> 
    { 
     SongMap() 
     { 
      Id(c => c.Id); 
      References(c => c.Artist); // Yes, that's all. 
      Map(c => c.Title).Not.Nullable().Length(50); 
     } 
    } 
} 

Это, как говорится, это проще, используя Automapper configuration.

+0

Ahh, хорошо. Я сбился с толку, не имея типа Artist в классе Song. Спасибо. – contactmatt

+0

thnx за ответ и лучшая часть ответа - конфигурация automapper –

1

У меня есть вещи, чтобы работать с идентификаторами с помощью следующей (проверено на моих сущностей, здесь просто переименованы вещи и не бежать не было сделано, пожалуйста, рассмотреть его как скороговорка попробовать):

References<Artist>(x => x.SongArtistID).Column("SongArtistID").ForeignKey("ArtistID"); 
Смежные вопросы