2011-08-11 11 views
0

を発行します1つのマスターファイルと多数の詳細ファイルがあります。各マスターファイルには、独自のFileParameterとFileParameValueがあります。各マスターファイルの子ファイルは、マスターファイルのFileParameterを使用しますが、独自のFileParameterValueを持ちます。流暢NHibernateのマッピングは私が流暢NHibernateはそれをマップする方法を知りたい、以下のクラスとテーブルを持っている

非常に理想的です。

+0

あなたは明確でしたマスターファイルと子ファイルの関係私はあなたのオブジェクト/ dbモデルでそれが表示されません。 –

+0

@Thilak NathenクラスFileを参照してください。 – Pingpong

答えて

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 
    } 
} 

はあなたがdetailsfileでparametervalueを追加する場合は、

は、同様の問題のためにも参照マスターファイルのパラメータ・オブジェクトを使用することを、プログラムで確認する必要がありNHibernate mapping

+0

あなたの助言に感謝します。私はそれをテストします。再度、感謝します。 – Pingpong

関連する問題