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 に答える