我刚刚开始我的冒险写一个应用程序,必须与数据库工作。我从在MySQL工作台中设计我的数据库开始,将这个项目导出到服务器,现在我想尝试编写一些代码,以便能够与这个服务器进行对话。
我已经决定尝试使用NHibernate,但是我仍然坚持编写Id/主键属性/列的映射。我已经读过,我必须指定生成器,但这是否意味着我必须从数据库中的这一列中删除自动增量?
如果对前面的问题的回答是否定的,那么哪个NH发生器将与服务器驱动的自动增量生成器一起正确工作。如果是正的,那么哪个生成器更好?或者,即使NH可以与服务器的AI一起工作,您仍然建议从列中删除AI并使用基于客户端的生成器(同样,哪个?)
发布于 2018-05-22 08:39:55
好的,因为这个问题没有直接的答案(有评论给了我答案),我想结束它,我会写一个。
我在这里的问题是对功能名称生成器的理解。当您有一个基于服务器的生成器(自动增量)时,您为什么需要应用程序中的另一个生成器?这就是我犯错误的原因。实际上,这在应用程序生成器中不需要真正生成任何东西,它可以从数据库中获取数据,但是对于这个应用程序来说,它没有什么区别。
因此,TL;DR As @RadimK hler在他对我的问题的评论中说,native和identity都能很好地处理数据库中的自动增量/标识(或数据库引擎使用的任何名称)列。
现在,是引用的时候了:
注:我多年来一直以身份生活..。但如果我能选择,序列或希洛将是我的选择。它不需要真正的插入让DB生成密钥..。
..。想一想:)我没有这样做,因为我正在编写一个小应用程序,大部分时间将由单个用户使用。使用一个实际的应用程序内生成器,让我们使用保存在内存中的数据,这些数据可以一次刷新到数据库。
https://stackoverflow.com/questions/50040048
复制相似问题