C# 在ASP.NET C中,我可以从db中使用动态字段实现动态对象吗#
我知道GraphQL是一个解决方案,但我想知道是否还有其他方法,因为我希望这个功能只是用来取代DB调用,我只是指定需要哪个对象及其字段,然后我就得到了这些数据。我不想要GraphQLAPI 例如:我有表A、B和C,如果我有表B和C主键作为表A中的外键 假设我是Id为1的查询表A数据,然后我还可以在同一查询中包含与表A Id为1链接的表c的数据,并使用C# 在ASP.NET C中,我可以从db中使用动态字段实现动态对象吗#,c#,asp.net,linq,asp.net-core,C#,Asp.net,Linq,Asp.net Core,我知道GraphQL是一个解决方案,但我想知道是否还有其他方法,因为我希望这个功能只是用来取代DB调用,我只是指定需要哪个对象及其字段,然后我就得到了这些数据。我不想要GraphQLAPI 例如:我有表A、B和C,如果我有表B和C主键作为表A中的外键 假设我是Id为1的查询表A数据,然后我还可以在同一查询中包含与表A Id为1链接的表c的数据,并使用include(x=>x.tableC)。例如:- db.Where<TableA>(x => x.id.equals(id)).
include(x=>x.tableC)
。例如:-
db.Where<TableA>(x => x.id.equals(id)).include(x => x.tablec);
db.Where(x=>x.id.equals(id))。包括(x=>x.tablec);
现在我的要求是,要包含的数据可以是动态的,它可以是TableB(FieldA,FieldB)
,也可以是TableC(FieldA),TableB(FieldA,FieldB)
,也可以是TableC(FieldD)
根据这一点,我想要结果
就我从你的问题中所理解的,这个东西将包含在一个变量中;假设您将关系存储在变量中,以便可以链接
include
:
大概是这样的:
//Lets say TableA has relation with tableB and tableC
List<string> tableARelations = new List<string>()
{
"tableB",
"tableC"
}
using (var dbContext = GetDbContext())
{
var query = dbContext.TableA.AsQueryable();
foreach (string include in tableARelations)
{
query = query.Include(include);
}
var result = query.Where(x => x.Id.Equals(id)).FirstOrDefault();
}
//假设TableA与tableB和tableC有关系
列表表关系=新列表()
{
“表B”,
“表C”
}
使用(var dbContext=GetDbContext())
{
var query=dbContext.TableA.AsQueryable();
foreach(表关系中包含的字符串)
{
query=query.Include(包含);
}
var result=query.Where(x=>x.Id.Equals(Id)).FirstOrDefault();
}
我们需要更多的细节。你能给出一个你想要替换的查询的例子,以及你想要做什么样的更改吗?您是在问如何动态构建SELECT语句以仅选择某些字段还是其他内容?“你的帖子目前只是有点模糊。”阿德森编辑,希望它能帮助你理解,谢谢。那么,代码如何知道每次要包含哪些表呢?你会设置一个变量来控制它吗?如果是,那么您可以使用If
语句来决定是否将每个include()语句链接到查询。