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