【问题标题】:Cant overriding class when mapping with NHibernate使用 NHibernate 映射时无法覆盖类
【发布时间】:2015-04-26 02:41:44
【问题描述】:

我有一个使用 NHibernate 映射的类“MyClass”,但在我的数据库中,表名是大写的(“MYCLASS”)。我正在尝试进行集成测试,并且在执行测试时出现 sql 错误(“Dynamic Sql Error”),我检查了问题并且我的查询在表名处带有双引号。

public class MyClass 
{
        public virtual int ID { get; set; }
        public virtual int NAME { get;  set; } 
}

如何更改 NHibernate 以在表名查询中不使用双引号?

【问题讨论】:

  • 查看内部异常并在此处粘贴消息!
  • 动态 SQL 错误 SQL 错误代码 = -204 表未知 Balancas 在第 1 行第 178 列这是内部执行,如果我尝试在我的数据库中执行此查询,则导致我的数据库中不存在“Balancas”它运行没有双引号的数据库。例如:从“Balancas”中选择 * -> 不要运行,因为名称是大写的。从 Balancas 中选择 * -> 它运行!
  • 你现在使用什么映射策略?代码映射?
  • 是的,我正在通过代码进行映射。公共类 MapBalancas : ClassMap { public MapBalancas() { Id(c => c.CODI_BAL);地图(c => c.CODI_EMP);地图(c => c.DESC_BAL);地图(c => c.SITU_BAL);地图(c => c.杜马努特); } }

标签: c# visual-studio nhibernate mapping firebird


【解决方案1】:

我找到了一个解决方案,在映射中只需要添加一个属性 Table("TableName")。

public class MapMyClass() : ClassMap<MyClass>
{
    public MapMyClass{
       Table("MYTABLE");
       Id(c => c.ID);
       Map(c => c.NAME);
    }
}

【讨论】:

  • 这就是我要回答的问题……这就是为什么我问你目前使用的映射策略是什么
猜你喜欢
  • 2012-04-14
  • 1970-01-01
  • 1970-01-01
  • 2011-08-08
  • 1970-01-01
  • 2012-02-20
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多