带有鉴别器的项目列表
本文关键字:项目 列表 鉴别 | 更新日期: 2023-09-27 18:20:49
假设我有一个名为 Client
的实体和 db 表。 Client
有一个外键 - 连接到Countries
表的外键CountryId
。
ClientA
,ClientB
和ClientC
继承自Client
。
我想列出我系统中的所有客户端(包括那些具有空 countryID 的客户端(,以及它们的具体类型(鉴别器值(和国家/地区名称。
我的查询如下所示:
from client in DbContext.Set<Client>()
from country in DbContext.Set<Country>().Where(x => x.Id == client.CountryId).DefaultIfEmpty()
where !(client is Salon)
select new
{
Id = client.Id,
Name = client.ClientName,
ClientClass = "TODO",
CountryName = country.CountryName
};
我的问题:如何选择鉴别器值?请注意代码中的"TODO",我现在卡住了。.
谢谢!
鉴别
器列由 Code First 在内部使用,您无法从继承映射的角度读取/写入其值。
要获取描述符,您必须创建自定义SQL查询
context.Database.SqlQuery<T>("SELECT client.Id, client.ClientName, client.Discriminator, country.CountryName FROM Countries country LEFT JOIN Clients client ON country.Id = client.CountryId WHERE client.Discriminator <> 'salon'").ToList()