【发布时间】:2019-09-11 10:19:01
【问题描述】:
如何使用实体框架在 C# 中创建动态选择查询,该查询将从 SQL 数据库中获取所有列名。这里,要在查询中提供的表名是从IEnumerable<string> 类型的通用列表中获取的
有一个列表 mylist,其中索引 [0] 的表名称为 Store,在索引 [1] 处有一个表 Address,在 [2] 处有一个表 Country。现在,需要向数据库发起查询以找出Store、Address 和Country 表的所有列名。
我假设,最终的查询应该以下面的方式——
select
mylist[0].1stcolumnname,
mylist[0].2ndcolumnname,
.....,
mylist[1].1stcolumnname,
mylist[1].2ndcolumnname, ....,
mylist[2].1stcolumnname,
mylist[2].2ndcolumnname,
....
from
SOMETABLENAME WITH JOINS"
如果正确获取了这些结果,则要触发的最终输出查询将类似于
Select
"Store.id", "Store.Name", "Store.gstno", "Store.addressId",
"Address.addressId", "Address.addressLine1", "Address.addressLine2",
"Address.postcode", "Address.countryId",
"Country.countryId", "Country.name"
from
SOMETABLENAME WITH JOINS;
正如您在此处看到的,每个表名和每个列名都被提取并创建了查询。
【问题讨论】:
-
如果您在同一个项目中使用 EntityFramework 和原始 SQL 查询 - 您可能做错了什么
-
没有。实际上,我必须使用实体框架从通用列表中获取表的列名并将它们放入列表中,以便可以对其进行索引以创建动态 select sql 查询,就像我在问题中提到的那样
-
我不知道你所说的 "dynamic select sql query" 是什么意思,但是如果 EF Core 使用:
var allSotresWithAddressesAndCountriesIncluded = dbContext.Stores.Include(s => s.Address).ThenInclude(a => a.Country).ToList();
标签: c# .net entity-framework ienumerable generic-list