我在互联网上看到很多关于映射关系对象与nhibernate的例子,但我不能让我的作品。
我有两个模型例如:
public class Vehicule
{
public virtual int Id { get; set; }
public virtual int Brand { get; set; }
public virtual int Color { get; set; }
public virtual int UserID { get; set; }
public virtual UserModel User { get; set; }
}
public class VehiculeMap: ClassMapping<Vehicule>
{
public VehiculeMap()
{
Table("G1Vehicule");
Id(x => x.Id, map => { map.Column("id"); });
Property(x => x.Brand, map => { map.Column("brand"); });
Property(x => x.Color, map => { map.Column("color"); });
Property(x => x.UserID, map => { map.Column("user_id"); });
}
}
public class UserModel
{
public virtual int Id { get; set; }
public virtual int Username { get; set; }
}
public class UserModelMap : ClassMapping<UserModel>
{
public UserModelMap()
{
Table("Users");
Id(x => x.Id, map => { map.Column("id"); });
Property(x => x.Username, map => { map.Column("username"); });
}
}
以前,我只显示了UserId,但是现在我想从数据库中获取特定的VehiculeModel时填充我的UserModel。
这里我的模型关系是OneToOne。 同样出于设计目的,我永远不会查询用户获取他的车辆列表,所以我不需要在我的UserModel中有一个“VehiculeModel列表”。
如果你有任何提示,关于如何在我的Map类中映射它(看到很多xml映射,但我想通过代码映射)非常感谢。
由于
答案 0 :(得分:1)
我终于成功了。 事实上,没有什么可复杂的,我只是忘了在Nhibernate的地图类列表中添加我的第二个模型(UserModelMap)。
public class VehiculeMap: ClassMapping<Vehicule>
{
public VehiculeMap()
{
Table("G1Vehicule");
Id(x => x.Id, map => { map.Column("id"); });
Property(x => x.Brand, map => { map.Column("brand"); });
Property(x => x.Color, map => { map.Column("color"); });
Property(x => x.UserID, map => { map.Column("user_id"); });
ManyToOne(x => x.User, map => {
map.Column("user_id"),
map.Fetch(FetchKind.Join),
map.notFound(NotFoundMode.Ignore)
})
}
}
也许它可以帮助别人。