如何让Fluent NHibernate自动继承一个继承自接口的抽象类的类?

时间:2009-11-27 17:37:56

标签: fluent-nhibernate

我刚刚开始使用Fluent NHibernate并尝试自动化我的实体时遇到以下问题:

public interface IDataEntity {}

public abstract class PhysicalEntity : IDataEntity {

         public virtual int Id { get;  set; }
         public virtual string Name { get; set; }
}

public class Mine  : PhysicalEntity {

        public virtual string MineString { get; set; }
}

private static ISessionFactory CreateSessionFactory()
        {
            return Fluently.Configure()
                .Database(MsSqlConfiguration.MsSql2008
                .ConnectionString(c => c.FromConnectionStringWithKey("CSMID_FNH")))
                .Mappings(m =>
                m.AutoMappings.Add(
                AutoMap.AssemblyOf<Mine>()
                .Where(t => t.Namespace == "DAL.DomainModel" && t.IsClass && !t.Name.EndsWith("Attribute") )
                .IgnoreBase<PhysicalEntity>()))
                .ExposeConfiguration(BuildSchema)
                .BuildSessionFactory();
        }

现在,如果我删除对IDataEntity接口的引用,则自动化工作正常。我尝试在界面中插入ID字段但是这会导致NHibernate运行时错误,就像告诉自动映射忽略IDataEntity类型一样。我在这里错过了什么?我真的希望我的域中的所有类都继承自IDataEntity。

1 个答案:

答案 0 :(得分:2)

好的,所以我想我有一个答案。

我所要做的就是像这样修改我的IDataEntity:

公共接口IDataEntity     {         int Id {get; }     }

我最初尝试使用get和set,但后来我会遇到问题,因为我的抽象类使用了受保护的集合而无法从接口继承。让setter退出界面似乎现在正在工作,希望它不会引入任何其他问题。