.net core EF核心,返回条目或创建并返回
我有一个.NETFramework 4.5项目,我正试图转换为asp.NETCore3.1。我很难找到转换以下代码的简单方法:.net core EF核心,返回条目或创建并返回,.net-core,entity-framework-core,.net Core,Entity Framework Core,我有一个.NETFramework 4.5项目,我正试图转换为asp.NETCore3.1。我很难找到转换以下代码的简单方法: var entry = db.mytable.FirstOrDefault(s => s.Name == "myname"); if (entry == null) { entry = db.mytable.Add(new mytable() { Name = "myname" }); db.SaveChanges(
var entry = db.mytable.FirstOrDefault(s => s.Name == "myname");
if (entry == null)
{
entry = db.mytable.Add(new mytable()
{
Name = "myname"
});
db.SaveChanges();
}
int myNewID = entry.ID;
转换为.net core后,此代码引发以下错误:
Cannot implicitly convert type 'Microsoft.EntityFrameworkCore.ChangeTracking.EntityEntry<project.model.mytable>' to 'project.model.mytable'
有人知道解决这个问题的好方法吗
var entry = db.mytable.FirstOrDefault(s => s.ID == id);
if (entry == null)
{
entry = new mytable()
{
ID = id
});
db.mytable.Add(entry);
db.SaveChanges();
}
int id = entry.id;
实际上,entry=db.mytable.Addnew mytable。。。返回提供跟踪信息的EntityEntry,而不是实际实体
实际上,entry=db.mytable.Addnew mytable。。。返回提供跟踪信息的EntityEntry,而不是实际的实体。要添加到@JMP的答案中: 见: 在代码中:
entry = db.mytable.Add(new mytable()
{
ID = id
});
您分配Add的返回,即EntityEntry,而在代码的前面,entry变量被声明为tenty。这就是你得到信息的原因:
无法将类型“Microsoft.EntityFrameworkCore.ChangeTracking.EntityEntry”隐式转换为“project.model.mytable”
要添加到@JMP的答案中: 见: 在代码中:
entry = db.mytable.Add(new mytable()
{
ID = id
});
您分配Add的返回,即EntityEntry,而在代码的前面,entry变量被声明为tenty。这就是你得到信息的原因:
无法将类型“Microsoft.EntityFrameworkCore.ChangeTracking.EntityEntry”隐式转换为“project.model.mytable”
谢谢@dugas,在你发帖的同时也添加了该信息:谢谢@dugas,在你发帖的同时也添加了该信息:对不起,在阅读了你的答案后,我更新了问题。添加后是否会更新条目变量以包含mytable中标识列的值?一旦调用SaveChanges,它将具有跟踪的表id列yes。我也在我的答案中添加了这一点。对不起,在阅读了你的答案后,我更新了问题。添加后是否会更新条目变量以包含mytable中标识列的值?一旦调用SaveChanges,它将具有跟踪的表id列yes。我也在我的答案中添加了这一点。