Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/292.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/20.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# NHibernate-如何流畅地将基于id的属性映射为从域模型到数据库的一种方式_C#_.net_Nhibernate_Fluent Nhibernate - Fatal编程技术网

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

C# NHibernate-如何流畅地将基于id的属性映射为从域模型到数据库的一种方式,c#,.net,nhibernate,fluent-nhibernate,C#,.net,Nhibernate,Fluent Nhibernate,在我的应用程序中,实体是由一个字符串键标识的,这是其ID的baseN表示形式 xAdWzC是数字Id的BaseN(52)表示形式 在插入之前,使用类似于oracle序列算法的方法生成数字Id(我的自定义Id生成器) 我如何映射我的类,它基本上有两个Id表示形式要保存在db中,有两列—一个数字—主键,另一个—字符串键,以便更好地标识db中的行?我显然不需要2个主键,更喜欢数字主键 字符串键只是一个在C#中环绕数字键的属性,如下所示 public string Key { get { re

在我的应用程序中,实体是由一个字符串键标识的,这是其ID的baseN表示形式
xAdWzC
是数字Id的BaseN(52)表示形式

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

我如何映射我的类,它基本上有两个Id表示形式要保存在db中,有两列—一个数字—主键,另一个—字符串键,以便更好地标识db中的行?我显然不需要2个主键,更喜欢数字主键

字符串键只是一个在C#中环绕数字键的属性,如下所示

public string Key
{
     get { return BaseNFunction(Id); }
}
基本上,我希望这个映射是db的一种方式。从db加载项时,必须完全忽略此列

NHB映射看起来是什么样子?
这个问题是困难的还是没有被发现?我认为这不值得赏金,但请帮助我。

将数字键作为主键。这将自动给它一个唯一的约束和索引。然后将字符串键列显式设置为具有唯一约束的常规列。如果您计划使用字符串列进行查找,请不要忘记向该列添加索引。

只需将生成的属性设置为只读即可(XML中为
access=“readonly”
;在fluent中查找类似的内容)


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

是的,问题是映射将是什么样子。我会编辑它,也许问题不清楚。你们使用的是fluent还是映射文件?我将编辑我的答案以包含适当的映射。谢谢,我想应该是这样。然而,我想知道是否可以保证它首先将id分配给对象,然后在持久化到db的同时读取属性?如果没有分配id,这个值对我来说是无效的。这是个好问题。我用HiLo生成器进行了测试,它工作正常;我认为序列应该是一样的(我没有任何支持db的序列可供测试)