带有鉴别器的项目列表

本文关键字:项目 列表 鉴别 | 更新日期: 2023-09-27 18:20:49

假设我有一个名为 Client 的实体和 db 表。 Client有一个外键 - 连接到Countries表的外键CountryId

ClientAClientBClientC继承自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()