Fluent NHibernate:如何在映射类中映射“外键”列

Fluent NHibernate:如何在映射类中映射“外键”列,nhibernate,fluent-nhibernate,domain-driven-design,Nhibernate,Fluent Nhibernate,Domain Driven Design,我开始使用Fluent NHiberate进行开发,我想知道如何在映射类中创建定义的“外键”关系 这是我的课。这些类与相关表是一对一的 public class Song { public virtual int SongID{ get; private set; } //Primary Key public virtual int SongArtistID { get; set; } //Foreign Key mapping to 'Artist.ArtistID'

我开始使用Fluent NHiberate进行开发,我想知道如何在映射类中创建定义的“外键”关系

这是我的课。这些类与相关表是一对一的

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 class SongArtistID列中创建一个已定义的外键关系,该关系将定义艺术家表/类中ArtistID列的外键。

给你:

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);
        }
    }
}
话虽如此,使用更简单。

给你:

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

这样说,使用.< /p>

更容易。我通过我的实体上的下一个测试来使用标识符,这里只是重命名了一些东西,没有运行,请把它看作是尝试:

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

<>我有一些事情要通过我的实体上的下一个测试来处理,这里只是重命名了一些东西,没有运行,请把它看作是尝试:

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

啊,好的。我被我的歌曲课上没有艺术家的类型弄糊涂了。谢谢。thnx给出了答案,答案中最好的部分是automapper配置啊,好的。我被我的歌曲课上没有艺术家的类型弄糊涂了。谢谢你的回答。thnx的答案和最好的部分是关于答案的automapper配置