我认为这是一个适度的新手问题。我已经使用 NHibernate/FluentNHibernate 大约 6 个月了,我认为我对基础知识有相当的了解。现在我正在推动一点点。我确定这已记录在案,但我现在在 Google 上花了几个小时,还没有完全弄清楚。
我有简单的课程,称之为简单:
public class Simple
{ public string Name { get; set;}
public string Desc { get; set; }
public string Status { get; set;}
}
状态实际上被限制为一小组值之一:“ACTIVE”、“ON-HOLD”和“CLOSED”。在 DB 模式中,我有一个名为 RetrofitStatus 的简单只读表:
CREATE TABLE [dbo].[RetrofitStatus](
[Status] [nvarchar](10) NOT NULL,
[SortOrder] [smallint] NOT NULL,
CONSTRAINT [PK_RetrofitStatus] PRIMARY KEY CLUSTERED
(
[Status] ASC
)
Simple 表上有一个外键约束,以确保 Status 处于 RetrofitStatus 中。
RetrofitStatus 表的目的是包含 SortOrder 列,以便我可以(在 SQL 中)
SELECT * from Simple s join RetrofitStatus r on r.Status=s.Status ORDER BY r.SortOrder
并将我的结果按显示顺序排序(例如,首先是所有 ACTIVE 条目,然后是 ON-HOLD 条目,然后是 CLOSED 条目,因为我按逻辑顺序排序,而不是按字母顺序或其他任何容易识别的顺序)。
我的问题是,如何在 FNH 中建模该对象和关系?我可以将 SortOrder 属性添加到我的 Simple 定义中并创建一个表示该属性的 View,但是当我尝试将新的 Simple 对象插入表中时会发生什么?显然,我不想尝试插入 SortOrder 属性。我想我需要以某种方式使用 NHib 元素,但同样,我不清楚它需要去哪里,插入时会发生什么,以及如何在 Fluent 中做到这一点?
我将尝试尝试反复试验,但我认为也许知道他们在做什么(我不知道)的人可以为我指明正确的方向并节省我一些时间。谢谢你的帮助。