Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/hibernate/5.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
Fluent-NHibernate映射问题_Hibernate_Nhibernate_Fluent Nhibernate - Fatal编程技术网

Fluent-NHibernate映射问题

Fluent-NHibernate映射问题,hibernate,nhibernate,fluent-nhibernate,Hibernate,Nhibernate,Fluent Nhibernate,我有以下类和表,我想了解如何在Fluent Nhibernate中映射它: class File { public virtual int Id { get; set; } public virtual IList<FileParameter> FileParameters { get; set; } public virtual IList<File> DetailFile { ge

我有以下类和表,我想了解如何在Fluent Nhibernate中映射它:

class File
        {
            public virtual int Id { get; set; }
            public virtual IList<FileParameter> FileParameters { get; set; }
            public virtual IList<File> DetailFile { get; set; }
        }

        class FileParameter
        {
            public virtual int Id { get; set; }
            public virtual File MasterFile { get; set; }
            public virtual string Name { get; set; }
            public virtual string DisplayName { get; set; }

            public virtual FileParameterValue FileParameterValue { get; set; }

        }

        class FileParameterValue
        {
            public virtual int Id { get; set; }
            public virtual File ParentFile { get; set;}
            public virtual FileParameter FileParameter { get; set; }
            public virtual string DefaultValue { get; set; }
            public virtual bool DisplayStatus { get; set; }
        }
我想要实现的是,有一个主文件和它的许多细节文件。每个主文件都有自己的FileParameter和FileParameterValue。主文件的每个子文件都使用主文件的FileParameter,但有自己的FileParameterValue

任何理想的都会非常感激。

类文件
class File
{
    public virtual int Id { get; set; }

    public virtual IDictionary<FileParameter, FileParameterValue> Parameters { get; set; }
    public virtual ICollection<File> Details { get; set; }
}

class FileParameter
{
    public virtual int Id { get; set; }
    public virtual File MasterFile { get; set; }
    public virtual string Name { get; set; }
    public virtual string DisplayName { get; set; }
}

class FileParameterValue
{
    public virtual int Id { get; set; }
    public virtual File ParentFile { get; set; }
    public virtual FileParameter FileParameter { get; set; }
    public virtual string DefaultValue { get; set; }
    public virtual bool DisplayStatus { get; set; }
}

class FileMap : ClassMap<File>
{
    public FileMap()
    {
        Id(file => file.Id).GeneratedBy.Identity();

        HasMany(file => file.Parameters)
            .AsEntityMap("ParameterId");

        // additional Properties
    }
}

class FileParameterMap : ClassMap<FileParameter>
{
    public FileParameterMap()
    {
        Id(param => param.Id).GeneratedBy.Identity();

        References(param => param.MasterFile, "FileId");

        // additional Properties
    }
}

class FileParameterValueMap : ClassMap<FileParameterValue>
{
    public FileParameterValueMap()
    {
        Id(param => param.Id).GeneratedBy.Identity();

        References(param => param.FileParameter, "ParameterId");

        // additional Properties
    }
}
{ 公共虚拟整数Id{get;set;} 公共虚拟IDictionary参数{get;set;} 公共虚拟ICollection详细信息{get;set;} } 类文件参数 { 公共虚拟整数Id{get;set;} 公共虚拟文件主文件{get;set;} 公共虚拟字符串名称{get;set;} 公共虚拟字符串DisplayName{get;set;} } 类FileParameterValue { 公共虚拟整数Id{get;set;} 公共虚拟文件ParentFile{get;set;} 公共虚拟文件参数文件参数{get;set;} 公共虚拟字符串DefaultValue{get;set;} 公共虚拟布尔显示状态{get;set;} } 类文件映射:类映射 { 公共文件映射() { Id(file=>file.Id).GeneratedBy.Identity(); HasMany(file=>file.Parameters) .AsEntityMap(“参数化”); //附加属性 } } 类FileParameterMap:ClassMap { 公共文件参数映射() { Id(param=>param.Id).GeneratedBy.Identity(); 参考(param=>param.MasterFile,“FileId”); //附加属性 } } 类文件ParameterValueMap:ClassMap { public FileParameterValueMap() { Id(param=>param.Id).GeneratedBy.Identity(); 引用(param=>param.FileParameter,“ParameterId”); //附加属性 } }
必须以编程方式确保,如果在detailsfile中添加parametervalue,则使用主文件的parameter对象


有关类似的问题,请参见

能否澄清主文件和子文件之间的关系?我在对象/db模型中看不到这一点。@Thilak Nathen请参考类文件。
class File
{
    public virtual int Id { get; set; }

    public virtual IDictionary<FileParameter, FileParameterValue> Parameters { get; set; }
    public virtual ICollection<File> Details { get; set; }
}

class FileParameter
{
    public virtual int Id { get; set; }
    public virtual File MasterFile { get; set; }
    public virtual string Name { get; set; }
    public virtual string DisplayName { get; set; }
}

class FileParameterValue
{
    public virtual int Id { get; set; }
    public virtual File ParentFile { get; set; }
    public virtual FileParameter FileParameter { get; set; }
    public virtual string DefaultValue { get; set; }
    public virtual bool DisplayStatus { get; set; }
}

class FileMap : ClassMap<File>
{
    public FileMap()
    {
        Id(file => file.Id).GeneratedBy.Identity();

        HasMany(file => file.Parameters)
            .AsEntityMap("ParameterId");

        // additional Properties
    }
}

class FileParameterMap : ClassMap<FileParameter>
{
    public FileParameterMap()
    {
        Id(param => param.Id).GeneratedBy.Identity();

        References(param => param.MasterFile, "FileId");

        // additional Properties
    }
}

class FileParameterValueMap : ClassMap<FileParameterValue>
{
    public FileParameterValueMap()
    {
        Id(param => param.Id).GeneratedBy.Identity();

        References(param => param.FileParameter, "ParameterId");

        // additional Properties
    }
}