假设我有一个实体和一个名为Client
的数据库表。
Client
有一个外键 - CountryId
连接到Countries
表。
ClientA
,ClientB
和ClientC
继承自Client
。
我想列出系统中的所有客户端(包括那些具有null 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”..
谢谢!
答案 0 :(得分:0)
鉴别器列在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()