我使用Entity Framework和C#,并且遇到以下问题。 我需要将程序中的对象从数据库链接到实体。所以 如果我有一个对象A和一个实体B,我将B的ID存储在A中。然后我 与A做事,最终想再次访问B。我这样做是这样的:
using (var context = new TestModelContainer()) {
var B = context.BSet.FirstOrDefault(b=>b.Id == A.BId);
// do stuff with B
}
但是我不知道这是否是有效的解决方案,因为如果我以某种方式从 数据库并添加新的B实体,最终另一个B获得相同的ID 作为存储在A中的原始B。
这样的最佳实践是什么?
答案 0 :(得分:1)
好消息是,身份生成不是这样工作的。这是一个计数器,旧数字不会被重复使用。
但是,您可能要考虑不为此目的使用数据库标识,而要使用存储在单独列中的GUID(或基于序列的编号)。数据库身份被认为是私人信息,例如,当您要合并数据库时,它们可能不会成为将来的证明。
在必须考虑删除的情况下,保持同步确实会有些痛苦,但这就是将与数据相关的数据存储在数据库外部的结果:-)。