Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ionic-framework/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Nhibernate 对可选引用执行QueryOver和null检查_Nhibernate_Queryover - Fatal编程技术网

Nhibernate 对可选引用执行QueryOver和null检查

Nhibernate 对可选引用执行QueryOver和null检查,nhibernate,queryover,Nhibernate,Queryover,我有一个与可选UserData具有1-1关系的用户。它们在数据库中共享相同的标识符 User Id(x => Id, "id") References<UserData>(x => x.UserData, "id"); UserData Id(x => Id, "id") 用户 Id(x=>Id,“Id”) 引用(x=>x.UserData,“id”); 用户数据 Id(x=>Id,“Id”) 我想查询没有可选数据的所有用户。 但此查询对用户ID列进行空

我有一个与可选UserData具有1-1关系的用户。它们在数据库中共享相同的标识符

User
 Id(x => Id, "id")
 References<UserData>(x => x.UserData, "id");

UserData
 Id(x => Id, "id")
用户
Id(x=>Id,“Id”)
引用(x=>x.UserData,“id”);
用户数据
Id(x=>Id,“Id”)
我想查询没有可选数据的所有用户。 但此查询对用户ID列进行空检查

var list = session.QueryOver<User>()
   .Where(x => x.UserData != null)
var list=session.QueryOver()
.Where(x=>x.UserData!=null)

如果我使用HasOne,情况也是如此。

假设您的映射是这样的:

    public class UserMap : ClassMap<User>
    {
        public UserMap()
        {
            Table("UserTable");
            Id(x=>x.Id).Column("Id");
            HasOne(x => x.Data);
        }
    }

    public class UserDataMap : ClassMap<UserData>
    {
        public UserDataMap()
        {
            Table("UserDataTable");
            Id(x => x.Id).Column("Id");
            Map(x=>x.DataText).Column("DataText");

        }
    }

你是说生成的SQL是错误的吗?
        UserData userDataAlias = null;

        var results = session.QueryOver<User>()
            .Left.JoinQueryOver(x=>x.Data,()=>userDataAlias)
            .WhereRestrictionOn(y=>y.Id).IsNull
            .List();
SELECT
        this_.Id as Id14_1_,
        userdataal1_.Id as Id13_0_,
        userdataal1_.DataText as DataText13_0_ 
    FROM
        UserTable this_ 
    left outer join
        UserDataTable userdataal1_ 
            on this_.Id=userdataal1_.Id 
    WHERE
        userdataal1_.Id is null