【问题标题】:NHibernate mapping with strings, no real foreign keys带有字符串的 NHibernate 映射,没有真正的外键
【发布时间】:2009-05-27 16:23:29
【问题描述】:

我有一个“实验室”类,它代表使用我的程序的公司的一个部门。它有一个名为“Employees”的子集合,旨在包含属于该实验室的所有员工。 employee 表包含一个名为“Department”的字符串字段,表示他们所属的部门,Lab 表包含一个名为“Department”的字符串字段,表示 Lab 是哪个部门。当员工的部门与实验室的部门匹配时,该员工属于实验室。

我意识到让员工表包含 LabID 字段将是更可取的方法,但是员工表不在我的控制之下,我不想修改它。我宁愿在不添加员工到实验室的映射表的情况下执行此操作,因为部门对部门提供相同的结果。

这是我尝试使用的简化映射。

  <class name="Lab">
    <id name="LabID">
      <generator class="native" />
    </id>
    <property name="Department" />
    <!--- other properties --->
    <set name="Employees" table="Employee_copy" generic="true" inverse="true">
      <key column="Department" property-ref="Department" />      
      <one-to-many class="Employee" />
    </set>
  </class>

返回的错误是

Identifier type mismatch; Found:<System.Int32> Expected:<System.String> Parameter name: identifier

生成的查询运行良好。

SELECT employees0_.Department as Department1_, employees0_.EmployeeID as EmployeeID1_, employees0_.EmployeeID as EmployeeID30_0_, employees0_.CommonName as CommonName30_0_, employees0_.LastName as LastName30_0_, employees0_.NetUserID as NetUserID30_0_, employees0_.CompanyID as CompanyID30_0_, employees0_.Department as Department30_0_ FROM Employee employees0_ WHERE employees0_.Department='IS'

那我做错了什么?

编辑:

还要注意反向关联可以正常工作。

<many-to-one name="Lab" column="Department" property-ref="Department" class="Lab" />

两个对象的关联属性- 实验室:

public virtual int LabID { get; set; }
public virtual string Department { get; set; }
public virtual ISet<Employee> Employees { get; set; }

员工:

public virtual int EmployeeID { get; protected set; }     
public virtual string Department { get; protected set; } 
public virtual Lab Lab { get; protected set; }  

【问题讨论】:

    标签: c# sql nhibernate


    【解决方案1】:

    由于 Employee 表是不可变的,因此我最终创建了一个视图,该视图根据部门获取 Lab ID,并直接链接到该视图而不是 employee 表。

    嗯。有效。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2014-04-19
      • 2011-08-31
      • 2017-06-28
      • 1970-01-01
      • 1970-01-01
      • 2013-03-26
      • 2011-08-08
      相关资源
      最近更新 更多