在下面的代码中 item1 的值为 null,而 item2 不为 null。任何想法为什么 Find 方法在这种情况下不能正常工作?
context= new EFModel.InputContext();
context.Items.Add(new Item{ Id = 1 });
var item1 = context.Items.Find(1);
var item2 = context.Items.Local.SingleOrDefault(i => i.Id == 1);
编辑:
感谢@Maximc 指出正确的方向。显然问题不在于密钥设置为自动生成并且我分配了它。EF 以某种方式通过用用户指定的 ID 覆盖 aut 生成的 Id 来正确处理这种情况。问题是由于铸造不当造成的。我的 Id 属性是类型的long
,所以当我这样做时, var item1 = context.Items.Find((long)1);
它就会起作用。