NHibernate dateTime作为ID不好主意?

时间:2010-03-30 16:21:46

标签: nhibernate

我有一个实体,似乎使用DateTime作为Id会是一个很好的诉讼,但我有一种奇怪的感觉,这可能是一个可怕的想法(因为我无法提出任何合理的理由,为什么),

这是一个不可变对象(即一旦记录了值,它就不应该真正改变) 所以DateTime作为NHibernate yay或Nay中的id字段? 非常感谢您对此的评论

3 个答案:

答案 0 :(得分:3)

糟糕的主意。 从来没有唯一的id具有某种意义,因为意义可以改变,对意义的一些其他约束也可以改变,而id必须只是那个,id。

如果必须,您可以在datetime字段中放置唯一索引并在查询中使用它,但将id保留为guid或autinc。

答案 1 :(得分:2)

非常糟糕的主意。如果你有重复怎么办?你无法保证该领域的独特性。您可能不会同时创建两个对象,但不能保证。但是,使用自动递增或GUID,您确实知道数据库将保持其密钥的一致性。

答案 2 :(得分:2)

非常糟糕的主意。它可能不是唯一的,它有很多含义(+/- GMT)等。 请改用Identity列并将datetime存储在单独的列中。