未知选择(?)系统数据实体DbSet

时间:2013-11-15 00:45:35

标签: c# linq entity-framework linq-to-entities

这样的事情可能吗?我收到以下错误。

    db.SomeTable.Add(new SomeTable()
    {
        GuidId = Guid.NewGuid(),
        Name = db.AnotherTable.Select(x => x.Name.Where(x.Id == localVariable.Id))
    }

  );
    db.SaveChanges();

未知选择(?)系统数据实体DbSet

2 个答案:

答案 0 :(得分:2)

Select会返回IEnumerable,而非单个记录。您需要添加.First()调用才能抓取一条记录。实体框架认为您正在尝试将列表放入单个字段中。

此外,您对Where()的使用不正确。 Where也会返回IEnumerable,并且只能应用于IEnumerable。可以将其视为过滤列表的一种方式。

以下是我认为你要求做的事情:

Name = db.AnotherTable.First(x => x.id == someId).Name

答案 1 :(得分:1)

我认为你想要的是:

Name = db.AnotherTable
    .First(x => x.Id == localVariable.Id)
    .Name;

步骤如下:

  1. 进入AnotherTable
  2. 中的项目列表
  3. 找到项目的Id等于localVariable.Id
  4. 的第一个项目
  5. 将变量设置为等于找到的项目的Name属性
  6. 您还可以使用FirstOrDefault()Single()SingleOrDefault()