我有实体:
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的同一实体一起使用?