我在Asp.net中遇到了Entity Framework的问题。每当我将对象添加到数据库而不执行SaveChanges()时,我想获取Id值。我怎么能这样做?
答案 0 :(得分:2)
如果使用序列生成键值而不是IDENTITY列,则可以在插入数据库之前获取键值。
EF Core支持本地Sequences,您可以使用一些自定义SQL在EF6中执行此操作。
答案 1 :(得分:0)
//MyClass has Id as property, this is set by the DB server
var myObject = new MyClass { NotIdProp = someVal; }
int idAfterInsert; //or string if using GUID for Id
//transaction and then dispose DB context
using (var db = new MyContext())
{
//add the entity object
db.MyTable.Add(myObject);
//now myObject will have its Id set by the DB server
idAfterInsert = myObject.Id;
//that's it if you don't want to Save Changes
}
但是,我没有看到一个有用的模式,
如果您的对象应该挂起而不是在此阶段保存,则只需添加另一个SQL
列,类似于已提交或已批准,并使其成为bit
值(C#中的布尔值)。
然后在阅读记录时,不要通过过滤bool列来获取您不想要的记录。