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

发布于 2024-08-15 15:23:43 字数 576 浏览 2 评论 0原文

我有两个实体,一个称为“站点”,另一个称为“分配”。站点可能有也可能没有关联的分配。一项分配仅与一个站点相关联。就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 的自动持久性模型,我认为我必须添加一个覆盖才能使其正常工作。我的问题是,如何映射这种关系?我的模式对于这种情况是否正确?如果需要,我可以更改架构。

I've got two entities, one called Site and the other called Assignment. A Site may or may not have an associated Assignment. An Assignment is only ever associated with one Site. In terms of C#, Site has a property of type Assignment which could hold a null reference.

I have got two tables by the same names in the database. The Assignment table's PK is also its FK back to the Site table (rather than Site having a nullable FK pointing to Assignment). The SQL (with fields omitted for brevity) is as follows

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))

I'm using Fluent NHibernate's auto persistence model, which I think I will have to add an override to in order to get this to work. My question is, how do I map this relationship? Is my schema even correct for this scenario? I can change the schema if needs be.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

影子是时光的心 2024-08-22 15:23:43

您需要阅读这些:

这是不可能进行一对一的延迟加载,除非它们不可为空,或者将它们映射为其中包含一项的多对一

You need to read these:

it's not possible to have one-to-ones lazy loaded unless they are not-nullable, or you map them as a many-to-one with one item in it

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文