2011-08-11 285 views
0

我有以下類和表,我想找出如何將它的功能NHibernate映射:功能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; } 
     } 

DATABSE表

Table File 
FileId, 

Table FileParameter 
ParameterId, FileId, Name, DisplayName 

Table FileParameterValue 
FileParameterValueId, ParameterId, FileId, DefaultValue, DisplayStatus 

我想達到什麼是那有一個主文件和它的許多細節文件。每個主文件都有自己的FileParameter和FileParameValue。每個主文件的子文件都使用主文件的FileParameter,但具有自己的FileParameterValue。

任何理想會非常appreicated。

+0

你能澄清主文件和子文件之間的關係?我沒有看到你的對象/數據庫模型。 –

+0

@ Thilak Nathen請參考課文件。 – 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