NHibernate不会执行SQL的原因是什么?

时间:2010-12-07 17:29:12

标签: c# nhibernate nhibernate-mapping fluent

我正在使用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映射但无法分辨哪个部分。我检查了表名和列名。

感谢您的帮助

1 个答案:

答案 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");