如何在SaveChanges期间获取Entity Framework中的标识值?

时间:2013-02-01 12:41:44

标签: entity-framework entity-framework-4 entity-framework-4.1 entity-framework-5

我有一个基表和从属表,以及其他表。当基表的标识值由于外键关系映射到从属表时,EF 4.0(使用MS VS 2010 Ultimate)执行正常。我期望更多的是,应该将相同的标识值映射/复制到跟踪键/值对的非关联/非关联表中的列。例如,如果基表的第一个记录标识生成为1,我希望将此数字复制到该键/值表中。 当我尝试时,它在实体框架中的SaveChanges()上下文中仅插入0。此特定列将映射到基表的列的标识属性。它就像,

BaseTable baseTable = new BaseTable();
// Added properties of basetable values
KeyValueTable table = new KeyValueTable();
table.Key = baseTable.BaseId;
table.Value = name;
AddToKeyValueTable(table);
SaveChanges();

如果我查看KeyValueTable,此键将写为0而不是baseTable的生成值。我怀疑这个问题是这些表与关系无关。我不应该这样做,因为密钥也可以容纳其他表。

请帮助我。

提前致谢!

1 个答案:

答案 0 :(得分:1)

您无法以这种方式从所需的主键获取value,因为@@scope_identity尚未准备好get

尝试这样做

BaseTable baseTable = new BaseTable();
...
// Added properties of basetable values
SaveChanges();

KeyValueTable table = new KeyValueTable();
table.Key = baseTable.BaseId;
table.Value = name;
AddToKeyValueTable(table);