这样的事情可能吗?我收到以下错误。
db.SomeTable.Add(new SomeTable()
{
GuidId = Guid.NewGuid(),
Name = db.AnotherTable.Select(x => x.Name.Where(x.Id == localVariable.Id))
}
);
db.SaveChanges();
系统数据实体 DbSet 的未知 Select(?)
这样的事情可能吗?我收到以下错误。
db.SomeTable.Add(new SomeTable()
{
GuidId = Guid.NewGuid(),
Name = db.AnotherTable.Select(x => x.Name.Where(x.Id == localVariable.Id))
}
);
db.SaveChanges();
系统数据实体 DbSet 的未知 Select(?)
Select
返回一个IEnumerable
,而不是单个记录。您需要添加一个.First()
调用来获取一条记录。实体框架认为您正在尝试将列表放入单个字段中。
此外,您的使用Where()
不正确。Where
也返回一个IEnumerable
, 并且只能应用于一个IEnumerable
. 将其视为过滤列表的一种方式。
以下是我认为您要求的方法:
Name = db.AnotherTable.First(x => x.id == someId).Name
我想你想要的是这样的:
Name = db.AnotherTable
.First(x => x.Id == localVariable.Id)
.Name;
其步骤是:
AnotherTable
Id
等于localVariable.Id
Name
您找到的项目的属性您也可以使用FirstOrDefault()
、Single()
和SingleOrDefault()
。