为什么LinqToEntities无法投影为相同类型?

时间:2018-08-30 00:47:26

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

我有实体:

public class Person
{
    public int Id { get; set; }
    public string FirstName { get; set; }
    public string LastName { get; set; }
    public DateTime DateAdded { get; set; }
}

和DbContext:

public class AssetContext : DbContext
{
    public AssetContext() : base("name=AssetContext")
    {
    }
    public virtual DbSet<Person> Persons { get; set; }

}

,我只想从此实体/记录中选择2个字段(Id和名字):

var r = db.Persons.Select(p => new Person { Id = p.Id, FirstName = p.FirstName }).FirstOrDefault();

我想,EF将生成类似以下的SQL查询:

SELECT TOP (1) 
    [c].[Id] AS [Id], 
    [c].[FirstName] AS [FirstName]
    FROM [dbo].[People] AS [c]

但我只是遇到一个奇怪的错误:

  

实体或复杂类型   “ WebApplicationEF_FluentValidation.Models.Person”不能为   在LINQ to Entities查询中构建。

为什么呢?如果我创建THE SAME DTO类,则效果很好。为什么EF无法与用于DbContext的同一实体一起使用?

0 个答案:

没有答案