我正在使用Fluent NHibernate来映射实体,并且在获取存储库以提供结果集时遇到问题。在控制台中,SQL不会显示,但其他存储库会显示。我有一种感觉,这是因为Mappings但却无法分辨原因。表名包含下划线,这是此repo与其他repo之间的唯一差异。我的问题是什么可能导致sql不被执行?
这是我的设置。
实体:
public class Org
{
public virtual int ID { get; set; }
public virtual string IndividualName { get; set; }
public virtual string GroupName { get; set; }
public virtual string AddressLine1 { get; set; }
public virtual string AddressLine2 { get; set; }
}
映射:
public class OrgMap : ClassMap<Org>
{
public OrgMap()
{
Table(@"Org_Updates"); // Also tried Table("Org_Updates");
Map(x => x.ID);
Map(x => x.IndividualName);
Map(x => x.GroupName);
Map(x => x.AddressLine1, "PhysicalLocationAddress");
Map(x => x.AddressLine2, "PLAddr2");
存储库:
public class OrgRepository : RepositoryBase<Org>, IOrgRepository
{
public IList<Org>GetTop50()
{
var query = All().AsList();
return query;
}
}
RepositoryBase:
public class OrgRepositoryBase<T> : RepositoryBase<T> where T : class
{
public OrgRepositoryBase()
{
var registry = ServiceLocator.Current.GetInstance<EventListenerRegistry>();
registry.RegisterListenerForType<T>(GetType(), EventType.Save);
registry.RegisterListenerForType<T>(GetType(), EventType.Delete);
}
protected override ISession GetSession()
{
return UnitOfWork.Current.GetSessionFromContext<ISession>(typeof (OrgModel));
}
protected override Type ModelType
{
get { return typeof (OrgModel); }
}
}
}
正如我之前所说,使用其他entites / mapping工作的其他存储库。我可以使用这个存储库,交换它实现的实体/映射,它将工作。我很确定这是因为hte映射但无法分辨哪个部分。我检查了表名和列名。
感谢您的帮助
答案 0 :(得分:0)
我在这里假设你的表确实有一个主键。如果是这样,您是否应该映射该主键
public class OrgMap : ClassMap<Org>
{
public OrgMap()
{
Table(@"Org_Updates");
Id(x => x.ID);
Map(x => x.IndividualName);
Map(x => x.GroupName);
Map(x => x.AddressLine1, "PhysicalLocationAddress");
Map(x => x.AddressLine2, "PLAddr2");