首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >难以映射与NHibernate的关系

难以映射与NHibernate的关系
EN

Stack Overflow用户
提问于 2009-08-25 12:57:09
回答 1查看 145关注 0票数 0

我正在使用2个表,Employees和一个名为EmployeeGroups的表,如下所示。我省略了下面大多数不相关的专栏。我正在努力映射外键关系。我想知道如何在下面的映射文件中设置EmployeeId关系?

员工

代码语言:javascript
复制
CREATE TABLE [dbo].[Employees](
[EmployeeId] [int] IDENTITY(1,1) NOT NULL,
[ForeName] [nvarchar](20) COLLATE Latin1_General_CI_AI NOT NULL,
[SurName] [nvarchar](20) COLLATE Latin1_General_CI_AI NOT NULL,

CONSTRAINT [PK_Employees_1] PRIMARY KEY CLUSTERED 
(
    [EmployeeId] ASC
)WITH (IGNORE_DUP_KEY = OFF) ON [PRIMARY]
) ON [PRIMARY]

EmployeeGroups

代码语言:javascript
复制
CREATE TABLE [dbo].[EmployeeGroups](
[GroupId] [int] NULL,
[EmployeeId] [int] NOT NULL,
[Active] [int] NULL,
 CONSTRAINT [PK_EmployeeGroups] PRIMARY KEY CLUSTERED 
(
    [EmployeeId] ASC
)WITH (IGNORE_DUP_KEY = OFF) ON [PRIMARY]
) ON [PRIMARY]

USE [DemoDEV]
GO
ALTER TABLE [dbo].[EmployeeGroups]  WITH CHECK ADD  CONSTRAINT     
[FK_EmployeeGroups_Employees] FOREIGN KEY([EmployeeId])
REFERENCES [dbo].[Employees] ([EmployeeId])

到目前为止,我的员工映射文件

代码语言:javascript
复制
<hibernate-mapping xmlns="urn:nhibernate-mapping-2.2">
<class name="AdaptiveMaintenance.Core.Domain.Employee, AdaptiveMaintenance.Core" table="Employees" lazy="false">
    <id name="ID" column="EmployeeId">
        <generator class="assigned" />
    </id>
    <property name="Forename" column="ForeName" not-null="true"/>
    <property name="Surname" column="SurName" not-null="true"/>

</class>
</hibernate-mapping>

到目前为止,我的EmployeeGroups映射文件如下所示

代码语言:javascript
复制
<?xml version="1.0" encoding="utf-8" ?>
<hibernate-mapping xmlns="urn:nhibernate-mapping-2.2">
  <class name="AdaptiveMaintenance.Core.Domain.EmployeeGroup, AdaptiveMaintenance.Core" table="EmployeeGroups" lazy="false">
      <id name="ID" column="EmployeeId">
      <generator class="foreign" />
    </id>

    <property name="Active" column="Active" />
</class>

EN

回答 1

Stack Overflow用户

发布于 2009-08-25 13:18:47

您不仅应该考虑如何映射db模型,还应该始终考虑类模型:它应该是什么样子的?

这将创建一个从EmployeeGroup到Employee的引用。

代码语言:javascript
复制
<?xml version="1.0" encoding="utf-8" ?>
<hibernate-mapping xmlns="urn:nhibernate-mapping-2.2">
  <class name="AdaptiveMaintenance.Core.Domain.EmployeeGroup, AdaptiveMaintenance.Core" table="EmployeeGroups" lazy="false">
    <id name="ID" column="GroupId">
      <generator class="assigned" />
    </id>

    <property name="Active" column="Active" />
    <many-to-one name="Employee" class="Employee" column="EmployeeId"/>
</class>

当你有一个一对一的关系并尝试耦合主键时,为什么会有一个GroupId?我让它成为一个独立的主键。

顺便说一句,如果你正在创建一个新的数据库模型,首先设计类,然后映射它们,然后使用SchemaExport创建模式,这会更容易。

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

https://stackoverflow.com/questions/1328123

复制
相关文章

相似问题

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