get方法在nhibernate的存储库中不起作用

时间:2018-08-23 10:36:20

标签: c# nhibernate mapping fluent-nhibernate entity

在这里,我尝试使用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);

它们两者都可以插入,但是当您尝试获取第一个文件无效但在第二个目录中可以获得时,添加用户数据的问题不起作用,但是当您不将用户添加到品牌中时,您可以轻松实现从数据库获取。如何在此处插入两个选项中做到这一点

1 个答案:

答案 0 :(得分:1)

References(x => x.user).ForeignKey("user_id").Not.LazyLoad(); 

尝试这应该可以帮助您