查询实体的子集并使用 EF 6 将其转换为另一个模型

Query a subset of an entity and cast it into another model using EF 6

我希望能够将一个实体的子集查询到另一个模型中。例如,假设我想从多个模型和 return 一个联系人模型中提取联系信息。这只是一个例子:

public class Store
{
    public int ID { get; set; }
    public string Name { get; set; }
    public string Phone { get; set; }
    ...
}

public class Person
{
    public int ID { get; set; }
    public string Name { get; set; }
    public string Phone { get; set; }
    ...
}

// Not an entity
public class Contact
{
    public int ID { get; set; }
    public string Name { get; set; }
    public string Phone { get; set; }
    public string Type {get; set; }
}

我只想从 Store 和 Person 查询 ID、Name 和 Phone。将结果联合在一起并将其强类型化为 Contact 以传递给我的视图。类型和 ID 一起将作为对原始实体的参考,因此我可以进行一些 CRUD 操作。

EF 6 可以吗?做这样的事情有更好的方法吗?

您应该可以这样做:

dbContext.Stores.Select(s => new Contact 
    {
        ID = s.ID,
        Name = s.Name,
        Phone = s.Phone,
        Type = "Store",
    })
    .Union(dbContext.Persons.Select(p => new Contact 
    {
        ID = p.ID,
        Name = p.Name,
        Phone = p.Phone,
        Type = "Person",
    }));

(对您的 DbContextDbSet 名称进行一些假设)。

Union in entity framework