2010-09-11 226 views
1

我開始用Fluent NHiberate進行開發,我想知道如何在Mapping類中創建定義的「外鍵」關係。Fluent NHibernate:如何映射映射類中的'外鍵'列

這是我的課。這些類與關聯表是一對一的。

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); 
    } 
} 

在我的映射文件,我想創建我的歌類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

啊,沒關係。在我的Song課程中沒有Artist類型,我感到困惑。謝謝。 – contactmatt 2010-09-11 16:22:56

+0

thnx爲答案,答案的最好部分是automapper配置 – 2015-11-14 07:56:19

1

我有事情通過接下來的標識符的工作(我的實體測試,這裏只是改名的事情,並沒有運行已完成,請把它作爲圖案嘗試):

References<Artist>(x => x.SongArtistID).Column("SongArtistID").ForeignKey("ArtistID");