我们有一个遗留的 ASP.Net 项目,我们目前正在使用 MVP 模式对其进行重构。对于后端,我们使用 Fluent NHibernate 和 oracle 数据库。以前的开发人员直接在数据库中进行了奇怪的本地化实现。而且我们很难用流畅的 nhibernate 映射它。
我们有以下表格,它们位于不同的数据库中。(甲骨文模式)
db1.Activity
(
ID, (pk)
ID_LANGUAGENAME, (fk)
INPUT_DATE,
and so on...
)
db2.LanguageName
(
ID, (pk)
ID_LANGUAGE, (pk)
NAME
)
db2.Language
(
ID,
LANGUAGE,
LANGUAGE_SHORT
)
ID_LANGUAGE 存储在 ASP.Net 会话变量中。我想映射实体,以便可以执行类似此查询的操作。
SELECT LN.NAME, A.INPUT_DATE FROM db1.Activity A
INNER JOIN db2.LanguageName LN ON A.ID_LANGUAGENAME = LN.ID
INNER JOIN db2.Language L ON LN.ID_LANGUAGE = L.ID
WHERE A.ID = :ACTIVITYID AND L.ID = :LANGUAGEID_FROM_SESSION_VARIABLE
所以基本上我不想像这样的 Activity 实体:
public class Activity
{
public virtual int Id { get; set; }
public virtual string Name { get; set; }
public virtual DateTime InputDate { get; set; }
}
Activity 的名称会自动映射到数据库中正确的 LanguageName.Name 字段。NHibernate 甚至可以做到这一点吗?