2012-09-12 44 views
2

我有一個基類,看起來像這樣:流利的映射基類 - 嘗試添加屬性時,已經加入

public abstract class MyBaseClass 
{ 
    public virtual DateTime UpdatedOn { get; set; } 
} 

然後我有一系列的其他實體的,從這個繼承:

public class User : MyBaseClass 
{ 
    public virtual string UserName { get; set; } 
    public virtual string Password { get; set; } 
} 

我對User映射將是:

public class UserMap : ClassMap<User> 
{ 
    public UserMap() 
    { 
     Id(x => x.UserName); 
     Map(x => x.Password); 

     Map(x => x.UpdatedOn); 
    } 
} 

我再有其他實體,映射到同一 辦法。
我的問題是,我得到以下錯誤:

Tried to add property 'UpdatedOn' when already added.

我想這是因爲我在地圖中每個實體的UpdatedOn列?
我的每個表都有這個UpdatedOn列,所以我應該如何映射它?

回答

2

Use a derived class in fluent nHibernate

這個問題應該幫助你。您基本上可以使用基本流暢的nhibernate映射類來映射您的UpdatedOn列,並從該基類派生所有其他映射類。

0

我有類似的情況。我確實喜歡這種...它的作品...
我本來應該將實體暴露爲界面..

public interface IEntity 
{    
    DateTime CreationDate { get; set; }    
    DateTime UpdationDate { get; set; }    
} 

public interface IUser : IEntity 
{ 
    DateTime UserName { get; set; } 
    DateTime Password { get; set; } 
} 

public interface IEmployee : IEntity 
{ 
    DateTime Name { get; set; } 
    DateTime Key { get; set; } 
} 

public abstract class Entity : IEntity 
{    
    public virtual DateTime CreationDate { get; set; } 

    public virtual DateTime UpdationDate { get; set; } 
} 

public class User : Entity, IUser 
{ 
    public virtual string UserName { get; set; } 
    public virtual string Password { get; set; }  
} 

public class Employee : Entity, IEmployee 
{ 
    public virtual string Name { get; set; } 
    public virtual string Key { get; set; } 
} 

public class UserMap : ClassMap<User> 
{ 
    public UserMap() 
    { 
     Id(x => x.UserName); 
     Map(x => x.Password); 

     Map(x => x.CreationDate); 
     Map(x => x.UpdationDate); 
    } 
} 

public class EmployeeMap : ClassMap<Employee> 
{ 
    public EmployeeMap() 
    { 
     Id(x => x.Name); 
     Map(x => x.Key); 

     Map(x => x.UpdationDate); 
     Map(x => x.CreationDate); 
    } 
}