Fluent nhibernate 浏览一端时,使用Fluent NHibernate映射一对多关系不包含任何子项

Fluent nhibernate 浏览一端时,使用Fluent NHibernate映射一对多关系不包含任何子项,fluent-nhibernate,one-to-many,hibernate-mapping,bidirectional,Fluent Nhibernate,One To Many,Hibernate Mapping,Bidirectional,我创建了以下域类: public class Car { public virtual int Id { get; set; } public virtual string Registration { get; set; } public virtual User ResponsibleContact { get; set; } protected Car() {} public Fahrzeug(User responsibleContac

我创建了以下域类:

public class Car
{
    public virtual int Id { get; set; }
    public virtual string Registration { get; set; }
    public virtual User ResponsibleContact { get; set; }

    protected Car()
    {}

    public Fahrzeug(User responsibleContact, string registration)
    {
        ResponsibleContact = responsibleContact;
        Registration = registration;

        ResponsibleContact.Cars.Add(this);
    }
}

public class User
{
    public virtual int Id { get; set; }
    public virtual byte[] EncryptedUsername { get; set; }
    public virtual byte[] EncryptedPassword { get; set; }

    public virtual IList<Car> Cars { get; private set; }

    public virtual string Username
    {
        get
        {
            var decrypter = UnityContainerProvider.GetInstance().UnityContainer.Resolve<IRijndaelCrypting>();
            return decrypter.DecryptString(EncryptedUsername);
        }
    }

    protected User()
    { }

    public User(byte[] encryptedUser, byte[] encryptedPassword)
    {
        Cars = new List<Car>();
        EncryptedUsername = encryptedUser;
        EncryptedPassword = encryptedPassword;
    }
}
公车
{
公共虚拟整数Id{get;set;}
公共虚拟字符串注册{get;set;}
公共虚拟用户负责联系人{get;set;}
受保护车辆()
{}
公共Fahrzeug(用户负责联系人、字符串注册)
{
ResponsibleContact=ResponsibleContact;
注册=注册;
ResponsibleContact.Cars.Add(这个);
}
}
公共类用户
{
公共虚拟整数Id{get;set;}
公共虚拟字节[]EncryptedUsername{get;set;}
公共虚拟字节[]EncryptedPassword{get;set;}
公共虚拟IList车{get;private set;}
公共虚拟字符串用户名
{
得到
{
var decrypter=UnityContainerProvider.GetInstance().UnityContainer.Resolve();
返回decrypter.DecryptString(EncryptedUsername);
}
}
受保护用户()
{ }
公共用户(字节[]encryptedUser,字节[]encryptedPassword)
{
Cars=新列表();
EncryptedUsername=EncryptedUsername;
EncryptedPassword=EncryptedPassword;
}
}
以及映射类:

public class CarMap : ClassMap<Car>
{
    public CarMap()
    {
        Id(c => c.Id).GeneratedBy.Native();
        Map(c => c.Registration);

        References(c => c.ResponsibleContact).Not.Nullable();
    }
}

public class UserMap : ClassMap<User>
{
    public UserMap()
    {
        Id(st => st.Id).GeneratedBy.Native();
        Map(st => st.EncryptedUsername).Column("Username");
        Map(st => st.EncryptedPassword).Column("Password");
        HasMany(st => st.Cars).Inverse().AsBag();
    }
}
公共类CarMap:ClassMap
{
公共CarMap()
{
Id(c=>c.Id).GeneratedBy.Native();
Map(c=>c.Registration);
引用(c=>c.ResponsibleContact).Not.Nullable();
}
}
公共类UserMap:ClassMap
{
公共用户映射()
{
Id(st=>st.Id).GeneratedBy.Native();
映射(st=>st.EncryptedUsername).Column(“用户名”);
映射(st=>st.EncryptedPassword).Column(“密码”);
HasMany(st=>st.Cars);
}
}
如果我查询一些成员对象,我会得到成员,但是cars集合是空的! 如果我查询一些汽车,我得到了所有的汽车与正确的成员。但是在会员内部,汽车收藏也是空的


有人知道会发生什么吗?

您必须确保集合的外键列和引用相同,否则会出现不匹配

References(c => c.ResponsibleContact, "ResponsibleContact_id").Not.Nullable();

HasMany(st => st.Cars).Inverse().KeyColumn("ResponsibleContact_id");