我很确定我在EF Core 2中做过类似的事情:
// Not in Db
public class MyCustomProjection
{
public int Id { get; set; }
public string Name { get; set; }
}
public class MyDbContext: DbContext
{
public DbSet<Blog> Blogs { get; set; }
[NotMapped]
public DbSet<MyCustomProjection> dummy { get; set; }
public List<MyCustomProjection> GetCustomProjectedBlogs()
{
return dummy.FromSql("SELECT Id, Title AS Name FROM Blogs").ToListAsync();
}
}
为了能够将FromSql查询到自定义投影中,我将带有我的投影实体的DbSet添加到我的DbContext并添加了注释[NotMapped]。
我确信这曾经有用但现在似乎如果我使用NotMapped注释它会创建表格,如果我使用Fluent api Ignore与实体,表格将不会被创建,但EF会产生错误说你不能投射到被忽略的实体。
我无法访问我的旧代码(在另一家公司),我无法重新创建这一位。 有人请解释我的记忆是否破裂或我做错了什么。