如何映射与Fluent NHibernate的可选一对一关系?

如何映射与Fluent NHibernate的可选一对一关系?,nhibernate,fluent-nhibernate,nhibernate-mapping,Nhibernate,Fluent Nhibernate,Nhibernate Mapping,我有两个实体,一个叫做Site,另一个叫做Assignment。站点可能有关联的分配,也可能没有关联的分配。作业仅与一个站点关联。就C#而言,Site有一个类型为Assignment的属性,该属性可能包含空引用 我在数据库中有两个同名的表。分配表的PK也是其返回站点表的FK(而不是站点具有指向分配的可空FK)。SQL(为简洁起见省略字段)如下所示 CREATE TABLE Site( SiteId INT NOT NULL CONSTRAINT PK_Site PRIMARY KEY)

我有两个实体,一个叫做Site,另一个叫做Assignment。站点可能有关联的分配,也可能没有关联的分配。作业仅与一个站点关联。就C#而言,Site有一个类型为Assignment的属性,该属性可能包含空引用

我在数据库中有两个同名的表。分配表的PK也是其返回站点表的FK(而不是站点具有指向分配的可空FK)。SQL(为简洁起见省略字段)如下所示

CREATE TABLE Site(
    SiteId INT NOT NULL CONSTRAINT PK_Site PRIMARY KEY)

CREATE TABLE Assignment(
    AssignmentId INT NOT NULL CONSTRAINT PK_Assignment PRIMARY KEY,
    CONSTRAINT FK_Assignment_Site FOREIGN KEY (AssignmentId) REFERENCES Site (SiteId))

我使用的是Fluent NHibernate的自动持久化模型,我想我必须添加一个覆盖以使其正常工作。我的问题是,我如何映射这种关系?对于这种情况,我的模式是否正确?如果需要,我可以更改架构。

您需要阅读以下内容:


除非一对一不可为空,否则不可能延迟加载它们,或者将它们映射为多对一,其中包含一个项

请给我表格定义好吗?(表、相关列、键的名称)。从你的描述中我不明白。@Stefan,我添加了CREATETABLE语句,希望这能让问题更清楚。