NHibernate - 如何流畅地将基于id的属性映射为从域模型到数据库的一种方式

时间:2011-08-15 05:25:14

标签: c# .net nhibernate fluent-nhibernate

我的app实体内部由字符串键标识 - 其ID的baseN表示形式 xAdWzC,它是数字标识的BaseN(52)表示。

数字Id是在插入之前使用类似于oracle序列算法生成的(我的自定义id生成器)。

如何映射我的类,它基本上有2个Id的表示形式,要保存在db中,其中2列是一个数字 - 主键,另一个 - 用于标识db中的行的字符串键更好?我显然不需要2个主键,而且更喜欢数字PK。

字符串键只是一个包含C#中数字键的属性,就像这个

一样
public string Key
{
     get { return BaseNFunction(Id); }
}

基本上我希望这种映射是db的一种方式。当从db加载项时,必须完全忽略该列。

NHB映射怎么样? 问题是困难的还是没有发现?我不认为它值得赏金,但请帮助我。

2 个答案:

答案 0 :(得分:2)

只需将生成的属性设为readonly(在XML中为access="readonly";以流畅的方式查找类似的内容)

在这种情况下只读意味着从实体读取属性并写入数据库,但不是相反

答案 1 :(得分:0)

将数字键设为主键。这将自动为其提供唯一约束和索引。然后使您的字符串键列显式为具有唯一约束的常规列。如果您打算通过它进行查找,请不要忘记在字符串列中添加索引。