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

然后我有其他实体,以相同的方式映射。
我的问题是我收到以下错误:

已添加时尝试添加属性“UpdatedOn”。

我想这是因为我UpdatedOn在每个实体中映射列?
我的每个表都有这个 UpdatedOn 列,那么我应该如何映射它?

4

2 回答 2

2

在流利的 nHibernate 中使用派生类

这个问题应该可以帮助你。您基本上可以使用基本流畅的 nhibernate 映射类来映射您的UpdatedOn列并从该基类派生所有其他映射类。

于 2012-09-12T12:06:15.317 回答
1

我有类似的情况。我确实喜欢这个......它有效......
我应该将实体公开为接口......

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);
    }
}
于 2012-12-18T08:43:49.270 回答