我刚刚开始使用Fluent NHibernate,并希望获得一些有关如何映射此内容的帮助/指针。 这是我正在使用的域模型:

类用户 :您的标准用户类

类首选项 :一组键值对。 用户可以有许多首选项。

类帖子 :为简洁起见,省略了完整的描述,但用户创建了一个帖子,并且该帖子可以包含一个或多个首选项。

因此,回顾一下:

class User 
{
    IList<Preference> Preferences;
    IList<Post> Posts;
} 

class Post
{
    IList<Preference> PostData;
}

Hibernate自动映射器提供了以下数据库结构:

User
------------------------
User_Id

Preference
------------------------
Preference_Id | User_Id | Post_Id

Post
------------------------
Post_Id | User_Id

首选项表在我看来很难看,宁愿有类似以下内容:

User
------------------------
User_Id

Preference
------------------------
Preference_Id | User_Id

Post
------------------------
Post_Id | User_Id | Preference_Id

非常感谢您提供有关如何执行此操作的帮助! 我已经有一个实现IAutoMappingOverride接口的类,但是我不确定如何执行实际的映射。

谢谢,
特佳

===============>>#1 票数:1

我将参考此配置以使您正确配置手动和自动映射:
混合混合自动映射和手动映射

我还注意到您在首选项和发布表中都有一些组合键,我将研究如何映射组合键。 这是一个可以帮助您映射复合键(主键具有多列)的链接:
使用Fluent NHibernate映射组合键

就流利的地图而言,以下内容可能会带您正确的方向,您可以使用HasManyReferences映射one-to-many关系,具体取决于您要在哪个表上使​​用外键:

public class UserMap : ClassMap<User>
{
    public UserMap(){
        Id(x => x.Id).Column("User_Id").GeneratedBy.Identity();
        HasMany(x => x.Preferences);
    }
}
public class PostMap: ClassMap<Post>
{
    public UserMap(){
        Id(x => x.Id).Column("Post_Id").GeneratedBy.Identity();
        References(x => x.Preferences); 
    }
}

===============>>#2 票数:0

由于首选项相同,因此简单的属性就足够了

class Post
{
    public virtual User User { get; set; }
    public virtual IList<Preference> Preferences { get { return User.Preferences; } }
}

  ask by Tejaswi Yerukalapudi translate from so

未解决问题?本站智能推荐: