问题描述
是否有一种方法可以优化由Razor Pages中的Scaffolding生成的即用型代码生成的数据库查询?以下是背景信息:
我有两个表:待办事项/任务和类别。任务已分配到类别,因此从任务到类别都有一个FK。
相应的模型文件:
public partial class Category
{
public Category()
{
Tasks = new HashSet<Todo>();
}
public int Id { get; set; }
public string Name { get; set; }
public string DummyData { get; set; }
public virtual ICollection<Todo> Tasks { get; set; }
}
public partial class Todo
{
public int Id { get; set; }
public string Description { get; set; }
[DataType(DataType.Date)]
public DateTime? DueDate { get; set; }
public int CategoryId { get; set; }
public virtual Category Category { get; set; }
}
一切都是由脚手架生成的,没有自定义代码。该应用程序运行正常。
但是,我们发现在“待办事项详细信息”和“编辑”页面上,仅类别ID和名称字段是必填字段。 “待办事项”页面不需要“类别”的任何其他字段(例如DummyData)。 但是,生成的sql在两个表上进行了INNER JOIN操作,并且包括了所有字段。
SELECT [t].[Id],[t].[categoryID],[t].[Description],[t].[DueDate],[c].[Id],[c].[DummyData],[c].[Name]
FROM [Tasks] AS [t]
INNER JOIN [Categories] AS [c] ON [t].[categoryID] = [c].[Id]
此处[c].[DummyData]
列是不必要的。 “托多编辑”表单也是如此。有没有一种方法可以以最小的努力来调整行为,以使完整的字段/列列表不用于仅需要ID + display列的“查找”操作?