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

时间:2015-05-08 21:33:18

标签: c# linq entity-framework-6

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

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; }
}

我想从商店和个人查询ID,姓名和电话。将结果合并在一起并将其强烈输入为Contact以传递给我的视图。类型和ID将作为引用返回到原始实体,因此我可以执行一些CRUD操作。

EF 6可以实现吗?这样做的更好方法是什么?

1 个答案:

答案 0 :(得分:0)

你应该可以这样做:

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