【发布时间】:2013-05-06 21:41:40
【问题描述】:
假设我有两张桌子:
Tasks
-TaskName
-CategoryID
Categories
-ID
-Name
现在,假设我有一堂课:
Task
string Name
string Category
如何映射它,以便当我保存任务对象时,它将查找给定类别名称的类别 ID 并将其存储在 CategoryID 字段中?
是否可以使用 Fluent nHibernate 进行映射?
【问题讨论】:
-
输入的分类名称不存在怎么办?这是可行的(使用
property-ref),我可以帮助你编写代码,但我认为这不是一个好的域设计。 -
如果类别名称不存在,则为错误。这种设计的原因是,一方面有一个公开的 api 公开“可读”值,另一方面有一个充满内部 id 的遗留数据库。我很乐意为您展示一个示例映射,但我一定会查看“property-ref”。
-
您不应该将您的内部域模型公开为公共 API,也不应该让 NHibernate 一路崩溃并崩溃。相反,使用适当的类别引用(由 id 映射)创建域模型并按名称执行查询。如果没有返回结果,可以返回错误。
-
嗯,这是我们在这里尝试做的一部分 - 以尽可能少的努力隐藏内部。这些类别是众所周知的类别 - 不是我们领域的一部分。如果 nHibernate 可以为我们做到这一点,我认为没有理由在我们的代码中添加额外的逻辑。因此,如果我希望 nHibernate 为我执行该查询,并在失败时返回错误 - 我将如何映射它?
-
先把我之前说的改掉。这是不可能的。
标签: nhibernate fluent-nhibernate nhibernate-mapping