我刚刚开始使用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。
答案 0 :(得分:2)
好的,所以我想我有一个答案。
我所要做的就是像这样修改我的IDataEntity:
公共接口IDataEntity { int Id {get; } }
我最初尝试使用get和set,但后来我会遇到问题,因为我的抽象类使用了受保护的集合而无法从接口继承。让setter退出界面似乎现在正在工作,希望它不会引入任何其他问题。