【问题标题】:One-To-Many mapping fluent NHibernate一对多映射流利的NHibernate
【发布时间】:2011-03-02 00:45:03
【问题描述】:

我正在尝试使一对多关系正常工作。我有以下映射:

    public class User
{

    public User()
    {
        UserCourses = new List<UserCourse>();
    }

    public virtual int Id { get; private set; }

    public virtual IList<UserCourse> UserCourses { get; private set;}


}
    public sealed class UserMap : ClassMap<User>
{
    public UserMap()
    {
        Id(x => x.Id, "Id");

        HasMany(x => x.UserCourses).Inverse().Cascade.All().Table("UserCourse");

        Table("[USER]");
    }
}
    public sealed class UserCourseMap : ClassMap<UserCourse>
{
    public UserCourseMap()
    {
        Id(x => x.Id, "Id");

        References(x => x.User, "UserID");

        Map(x => x.Role, "Role");
    }
}

如果我尝试创建用户对象的实例然后尝试查看课程,则会收到以下异常:

                var user = (from u in userRepository.Linq() // Fetch a user
                        where u.Username == username
                        select u).Single();

            var courses = user.UserCourses.Single(); // wont work

{"无效的列名 'User_id'。\r\n无效的列名 'User_id'。"} 无法初始化集合:[Fringedivision.Rapp.Domain.User.UserCourses#1][SQL: SELECT usercourse0_.User_id as User4_1_, usercourse0_.Id as Id1_, usercourse0_.Id as Id1_0_, usercourse0_.Role as Role1_0_, usercourse0_.UserID作为 UserID1_0_ FROM [UserCourse] usercourse0_ WHERE usercourse0_.User_id=?]

我似乎无法理解问题所在,有什么建议吗?如果我创建 UserCourse 对象的实例,参考映射似乎可以工作。

【问题讨论】:

    标签: c# .net sql-server nhibernate fluent-nhibernate


    【解决方案1】:

    将列添加到 has many

    HasMany(x =&gt; x.UserCourses).KeyColumn("UserId") 或您使用的 fnh 版本中的任何实际语法

    【讨论】:

    • 这个。或者,更改 Fluent 中外键命名的命名约定。默认值为 [table_name]_id,但在配置 FluentNH 时一般情况下可以更改。
    • 感谢达伦·科普。现在可以了!下辈子见,兄弟
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-12-09
    • 2010-12-26
    • 2010-12-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多