c# - 从具有外键 C# 实体框架的表中获取数据
问题描述
我在 Code First asp.net 中有这个类
public class Account
{
[Key]
public int Id { get; set; }
[Column(TypeName = "nvarchar(100)")]
public string AccountTitle { get; set; }
public Classification Classification { get; set; }
}
public class Classification
{
[Key]
public int Id { get; set; }
[Column(TypeName = "nvarchar(100)")]
public string TitleClassification { get; set; }
public ICollection<Account> Accounts { get; set; }
}
public class ClassificationDto
{
public int Id { get; set; }
public string TitleClassification { get; set; }
}
在我的数据库上下文中
public DbSet<Account> Accounts { get; set; }
AccountingManager.FindAll 是这个
public IQueryable<T> FindAll()
{
return context.Set<T>().AsNoTracking().AsQueryable();
}
我试图获得只有 3 的“分类”,但我也获得了与此代码关联的“帐户”:
[HttpGet]
[Route("get-classification")]
[Authorize]
public async Task<IActionResult> GetAccountClassification()
{
List<ClassificationDto> classificationList = new List<ClassificationDto>();
var accountingManager = new AccountingManager(context);
var list = accountingManager.FindAll();
classificationList = await list.Select(s => new ClassificationDto
{
Id = s.Classification.Id,
TitleClassification = s.Classification.TitleClassification,
}).ToListAsync();
return StatusCode(StatusCodes.Status200OK, classificationList);
}
解决方案
如果要从分类表中获取所有行,
将public DbSet<Classification> Classifications { get; set;}
属性添加到您的DbContext
班级。然后实现类似的FindAll()
方法:
return context.Classifications.AsNoTracking().ToList()
推荐阅读
- angular - 如果第一个失败,我如何显示默认源?
- python-3.x - Kivy:当我已经识别了所有类时,为什么它显示“未知类”
- mirth - Mirth - 如何在有多个目的地时处理响应
- flutter - 如何通过引用有状态小部件来传递数据?我想更改有状态小部件内的变量并更新原始变量
- python - 来自不同位置的 2 个输入 python 多线程
- sqlite - 运行 Sqlite 批处理文件以读取同一目录中的所有 .txt 文件
- python - 清理时出现python多进程socket.error
- javascript - 0 在 ES6 中被认为是真的吗?
- file - 从外部访问共享首选项/将值存储到新文件中并从外部访问它
- javascript - 有没有办法用代码“清除网站数据”浏览器?