在这里,我尝试使用nhibernate从表中获取数据,但是此日期与其他表有关系。ManyToOne在下面是两个表 品牌地图类别
class BrandMap : ClassMap<BrandsEntity>
{
public BrandMap()
{
Id(x => x.Id);
Map(x => x.name);
Map(x => x.deleted);
Map(x => x.update_date);
Map(x => x.create_date);
References(x => x.user).ForeignKey("user_id").LazyLoad();
Table("brand");
}
这是地图的用户类别 用户地图类
public UserMap()
{
Id(x => x.Id);
Map(x => x.username);
Map(x => x.password);
Map(x => x.deleted);
Map(x => x.role);
Map(x => x.create_date);
Table("users");
}
常规存储库类型,这是基本存储库
这是我的存储库。存储库是repostiroy的通用类型,它是所有其他存储库的基类。
public T getById(int id)
{
T stdnet = null;
using (var session = SSession.getInstance().OpenSession())
{
using (var tx = session.BeginTransaction())
{
stdnet = session.Get<T>(id);
// var stdnt = (T) session.GetIdentifier(id);
tx.Commit();
}
}
return stdnet;
}
我有两个以下插入选项。第一个是
第一个选项
UsersRepository userRepository = new UsersRepository();
UsersEntity user = userRepository.getById(Session.UserID);
brandsEntity.name = dto.name;
brandsEntity.create_date = dto.create_date;
brandsEntity.update_date = dto.update_date;
brandsEntity.user = user;
brandsRepository.merge(brandsEntity);
第二个选项
UsersRepository userRepository = new UsersRepository();
UsersEntity user = userRepository.getById(Session.UserID);
brandsEntity.name = dto.name;
brandsEntity.create_date = dto.create_date;
brandsEntity.update_date = dto.update_date;
// brandsEntity.user = user;
brandsRepository.merge(brandsEntity);
它们两者都可以插入,但是当您尝试获取第一个文件无效但在第二个目录中可以获得时,添加用户数据的问题不起作用,但是当您不将用户添加到品牌中时,您可以轻松实现从数据库获取。如何在此处插入两个选项中做到这一点
答案 0 :(得分:1)
References(x => x.user).ForeignKey("user_id").Not.LazyLoad();
尝试这应该可以帮助您