首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >FluenNHibernate .Formula("...")不工作

FluenNHibernate .Formula("...")不工作
EN

Stack Overflow用户
提问于 2011-08-17 19:15:57
回答 1查看 843关注 0票数 0

我在AutoMapping中使用FluentNHibernate。不使用自定义约定或更改。NHibernate和FluentNHibernate程序集都是最新版本。数据库为Sqlite3

我尝试使用以下实体(每个层次结构的表):

代码语言:javascript
复制
public abstract class Unit
{
  public virtual int Id { get; set; }
  public virtual string Name { get; set; }
}

public class Employee : Unit
{       
  public Employee()
  {
    this.Groups = new List<Group>();
  }

  public virtual IList<Group> Groups { get; private set; }      
}

public class Group : Unit
{
  public Group ()
  {
    this.Employees = new List<Employee>();
  }

  public virtual int EmployeesCount { get; set; }

  public virtual IList<Employee> Employees { get; private set; }

}   

public class GroupAutoMappingOverride : IAutoMappingOverride<Group>
{
  public void Override (AutoMapping<Group> mapping)
  {
    mapping.Map(g => g.EmployeesCount).Formula("count(*)");
  }
}

我自动生成模式。一切都很好:

代码语言:javascript
复制
create table "Unit" (
  Id  integer,
  TypeId TEXT not null, //discriminator column
  Name TEXT,
  primary key (Id)
)

create table EmployeesToGroups (
  Employee_id INTEGER not null,
  Group_id INTEGER not null
)

我检查了自动生成的映射:

代码语言:javascript
复制
<hibernate-mapping xmlns="urn:nhibernate-mapping-2.2">
  <class xmlns="urn:nhibernate-mapping-2.2" name="App.Models.Entities.Unit, App, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null" table="`Unit`">
    <id name="Id" type="System.Int32, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
      <column name="Id" />
      <generator class="identity" />
    </id>
    <discriminator type="String">
      <column name="TypeId" />
    </discriminator>
    <property name="Name" type="System.String, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
      <column name="Name" />
    </property>
   <subclass name="App.Models.Entities.Employee, App, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null">
      <bag access="backfield" name="Groups" table="GroupToEmployee">
        <key>
          <column name="Employee_id" />
        </key>
        <many-to-many class="App.Models.Entities.Group, App, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null">
          <column name="Group_id" />
        </many-to-many>
      </bag>      
    </subclass>
    <subclass name="App.Models.Entities.Group, App, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null">
      <bag access="backfield" inverse="true" name="Employees" table="EmployeeToGroup">
        <key>
          <column name="Group_id" />
        </key>
        <many-to-many class="App.Models.Entities.Employee, App, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null">
          <column name="Employee_id" />
        </many-to-many>
      </bag>
      <property name="EmployeesCount" type="System.Int32, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
        <column name="EmployeesCount" />
      </property>
    </subclass>
  </class>
</hibernate-mapping>

嗯..。没有公式。当我尝试从group中获取所有记录时,我得到一个异常:

代码语言:javascript
复制
SQLite error
no such column: group0_.EmployeesCount

生成的查询错误:

代码语言:javascript
复制
NHibernate: select group0_.Id as Id6_, group0_.Name as Name6_, **group0_.EmployeesCount** as Employee9_6_ from "Unit" group0_ where group0_.TypeId='App.Models.Entities
.Group'

怎么了?它应该是有效的吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2011-08-17 20:58:10

您的映射覆盖似乎没有被考虑在内。如果是这样的话,您应该会在映射文件中看到类似以下内容:

代码语言:javascript
复制
<property name="EmployeesCount" formula="count(*)" type="System.Int32, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />

在构建如下映射时,是否包含了映射覆盖:

“要使用重写,您需要指示您的AutoMap实例使用它们。通常,这将在流畅的配置设置的上下文中完成,但我将仅使用AutoMap本身进行说明。”

代码语言:javascript
复制
AutoMap.AssemblyOf<Person>(cfg)
  .UseOverridesFromAssemblyOf<PersonMappingOverride>();

以上内容摘自http://wiki.fluentnhibernate.org/Auto_mapping#Overrides

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/7091920

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档