我有以下类和表,我想了解如何在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; }
}
数据库表
Table File
FileId,
Table FileParameter
ParameterId, FileId, Name, DisplayName
Table FileParameterValue
FileParameterValueId, ParameterId, FileId, DefaultValue, DisplayStatus
我想要实现的是,有一个主文件及其许多详细信息文件。每个主文件都有自己的FileParameter和FileParameValue。每个主文件的子文件都使用主文件的FileParameter,但有自己的FileParameterValue。
任何理想都会非常有用。
答案 0 :(得分:0)
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
}
}
您必须以编程方式确保,如果在详细信息文件中添加参数值,则使用主文件的参数对象
另请参阅类似问题NHibernate mapping