Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/299.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
C# 流利的NHibernate:获得“a”;无法初始化集合";在SharpDevelop中调试NUnit测试时出错_C#_Mysql_Nhibernate_Fluent Nhibernate - Fatal编程技术网

C# 流利的NHibernate:获得“a”;无法初始化集合";在SharpDevelop中调试NUnit测试时出错

C# 流利的NHibernate:获得“a”;无法初始化集合";在SharpDevelop中调试NUnit测试时出错,c#,mysql,nhibernate,fluent-nhibernate,C#,Mysql,Nhibernate,Fluent Nhibernate,当使用NHibernate作为ORM工具时,尝试使用一个不显著的对象,并将其他对象的集合作为成员时,会出现以下错误。当顶级对象在所述集合中没有任何对象时,我会收到类似“无法初始化集合:(大量SQL)”的错误。我知道它引用的表是空的,应该是集合,但是NHibernate似乎试图填充它,然后抛出异常,因为没有数据 我希望集合仅为null或空,而不是停止程序的执行,这在我看来像是一个NHibernate错误,但可能是我不正确地包装了ORM对象等,因为我对该技术相对较新。我的地图附在下面。抛出错误的是_

当使用NHibernate作为ORM工具时,尝试使用一个不显著的对象,并将其他对象的集合作为成员时,会出现以下错误。当顶级对象在所述集合中没有任何对象时,我会收到类似“无法初始化集合:(大量SQL)”的错误。我知道它引用的表是空的,应该是集合,但是NHibernate似乎试图填充它,然后抛出异常,因为没有数据

我希望集合仅为null或空,而不是停止程序的执行,这在我看来像是一个NHibernate错误,但可能是我不正确地包装了ORM对象等,因为我对该技术相对较新。我的地图附在下面。抛出错误的是_holdings集合

public class FundMap : ClassMap<Fund>
{
    public FundMap() 
    {
        Id(x => x._fundID).GeneratedBy.Identity();
        Map(x => x._cik);
        Map(x => x._fundName);
        //TODO: get correct handling of HasMany relationships.
        HasMany(x => x._holdings)
            //.Inverse()
            .Cascade.All();
            //.Cascade.None();
    }
}
public class FundMap:ClassMap
{
公共基金地图()
{
Id(x=>x._fundID).GeneratedBy.Identity();
Map(x=>x.。_cik);
Map(x=>x.。\u基金名称);
//TODO:正确处理许多关系。
HasMany(x=>x.\U控股)
//.Inverse()
.Cascade.All();
//.Cascade.None();
}
}

NH始终将自己的列表实现附加到对象,该对象在第一次访问时延迟加载内容。它只有在查询数据库后才知道集合实际上是空的

我的猜测是,
Holding
的映射与hasmany的映射不匹配。考虑这样的事情:

public HoldingMap()
{
    References(x => x.Fund, "f_id");
}

public FundMap()
{
    HasMany(x => x._holdings)
        //.Column("fund_id")     // the default
        .Cascade.All();
}
Hasmany没有正确的外键列,无法加载所持内容。可以通过显式指定列来解决此问题

    HasMany(x => x._holdings)
        .Column("f_id")     // same as in Holding
        .Cascade.All();