首页 > 解决方案 > 使用 EF 从查询中读取新字段

问题描述

我在 dbcontext 中有一个 dbset:

public DbSet<Table> Table { get; set; }

类的

public class Table
    {
        public int Id { get; set; }
        public string Name { get; set; }
        public string Address { get; set; }
    }

我还有一个原始查询,其中包含从其他查询中获得的新字段(SELECT ...)

"SELECT Id, Name, (SELECT ...) AS QueryField FROM Table"

如何QueryField通过 EF 制作新对象?

如果我用这个

var items = _context.Table
                .FromSqlRaw(
                    "SELECT Id, Name, (SELECT ...) AS QueryField FROM Table"
                ).ToList();

我收到错误“无效的列名'地址'”

如果我用这个

            var items = _context.Table
                .FromSqlRaw(
                    "SELECT Id, Name, (SELECT ...) AS QueryField FROM Table"
                ).Select(x => new
                {
                    x.Id,
                    x.Name,
                }).ToList();

我无法阅读QueryField,因为xTable类型并且那里没有这样的属性/归档。

标签: .netentity-framework

解决方案


你没有分享你的(SELECT ...),但它看起来或多或少是这样的:

var items = _context.Table
                .Select(x => new
                {
                    x.Id,
                    x.Name,
                    QueryField = _context.OtherTable.Select(...)
                }).ToList();


推荐阅读