我刚开始学习SQL,并试图让我的第一个示例发挥作用。我有两张一对多关系表:
public class Customer
{
public Guid Id { get; set; }
public string CompanyName { get; set; }
public string Address { get; set; }
[JsonIgnore]
public virtual ICollection<Project> Projects { get; set; }
}
public class Project
{
public Guid Id { get; set; }
public string Name { get; set; }
public string ProjectType { get; set; }
public Guid CustomerId { get; set; }
public Customer Customer { get; set; }
}
然后我通过APIProjectsController
:执行以下命令
[HttpGet]
public async Task<IActionResult> Get()
{
System.Collections.Generic.List<Project> projects =
await _context.Projects.Include(d => d.Customer).ToListAsync();
return Ok(projects);
}
我正在获取
private IEnumerable<Project> ProjectsList { get; set; } = new List<Project>();
在剃须刀页上,带有
this.ProjectsList = await this.HttpClient.GetFromJsonAsync<IEnumerable<Project>>("api/Projects");
我已经用调试器检查了ProjectsList
的数据结构,它看起来很好。
然而:Razor页面表(两列"项目名称"one_answers"客户名称"(:
<Table DataSource="ProjectsList" TItem="Project">
<Column TData="string"
Title="Name"
@bind-Field="context.Name"
SorterCompare="@((a,b)=> string.Compare(a,b))"
SortDirections="new[] { SortDirection.Descending }"
Filterable />
<Column TData="string"
@bind-Field="context.Customer.CompanyName"
SorterCompare="@((a,b)=> string.Compare(a,b))"
SortDirections="new[] { SortDirection.Descending }"
Filterable />
</Table>
我得到一个对象的异常没有设置为对象的实例。我想这是因为context.Customer.CompanyName
,其中Customer
没有初始化?
首先,我有一个问题,我应该重做我的Project
模型,并在其中添加类型为字符串CompanyName
的额外列,还是有其他方法可以在razor页面上显示数据?
如果…我应该在Project.cs
中添加额外的列,如何在其中使用linq查询数据?
首先,尝试以下操作,如果出现错误,请在此处发布其文本:
public Customer Customer { get; set; } = new Customer {};