英文:
entity framework: retrieve Id of new entry upon creation
问题
以下是翻译好的部分:
有没有一种方法可以在不明确要求的情况下获取最后创建的条目的ID?
我正在执行以下操作:
public async Task SaveItemAsync(tblUsers item) //change here
{
if (item == null) throw new ArgumentException(nameof(item));
await InitializeAsync();
if (item.Id == null)
{
try
{
await _table.InsertItemAsync(item);
}
catch (Exception e)
{
var message = e.Message;
}
}
else await _table.ReplaceItemAsync(item);
}
但没有返回任何内容,但在数据库中创建了一个带有ID的条目。
如何更改以便返回新条目的ID?
英文:
is there a way to get the id of the last entry created without asking for it specifically?
I am doing this:
public async Task SaveItemAsync(tblUsers item) //change here
{
if (item == null) throw new ArgumentException(nameof(item));
await InitializeAsync();
if (item.Id == null)
{
try
{
await _table.InsertItemAsync(item);
}
catch (Exception e)
{
var message = e.Message;
}
}
else await _table.ReplaceItemAsync(item);
}
anod nothing is returned but an entry with a Id is created on the db.
How can I alter that so that the Id of the new entry is returned?
答案1
得分: 1
如果id是由数据库生成的,Entity Framework应该在插入的实体中填充它,即:
_ctx.Items.Add(item);
await _ctx.SaveChangesAsync();
var insertedId = item.Id;
P.S.
-
可能你想使用类似
item.Id == default
的方式来检查id是否为空。 -
考虑使用
DbContext.Update
或DbSet.Update
方法,它们会为您执行关键检查(请参阅备注部分)。
英文:
If id is database generated Entity Framework should fill it in the inserted entity, i.e.:
_ctx.Items.Add(item);
await _ctx.SaveChangesAsync();
var insertedId = item.Id;
P.S.
-
Possibly you might want to use something like
item.Id == default
to check if the id is empty. -
Consider using
DbContext.Update
orDbSet.Update
method which will perform key checking for you (see the Remarks section).
通过集体智慧和协作来改善编程学习和解决问题的方式。致力于成为全球开发者共同参与的知识库,让每个人都能够通过互相帮助和分享经验来进步。
评论