我需要从数据库中添加数据到List<Clients>
。我从数据库中提取数据,现在我不知道如何正确地做,什么是这种操作的好模式/标准。下面你可以找到我的代码。我需要填充List<Clients>
。我不认为我在这里遵循了良好的实践,我想我可以做得更简单,但不知 prop 体怎么做。我不认为我在这里返回了一个带有数据的列表,我认为我没有正确地填充它。
public class Clients
{
public Id { get; set; }
public string Name { get; set; }
public string Address { get; set; }
}
public interface IClientsRepository
{
Task<List<Clients>> ListAllClients();
}
public class ClientsRepository : IClientsRepository
{
private List<Clients> _clientsList;
public ClientsRepository(MainDbContext dbContext) : base(dbContext)
{
}
public async Task<List<Clients>> ListAllClients()
{
_clientsList = new List<Clients>();
var query = await _dbContext.ClientsTbl
.AsNoTracking()
.Join(_dbContext.AddressTbl.AsNoTracking(),
client => client.Id,
address => address.ClientId,
(client, address) => new
{
client.Id,
client.Name,
address.FullAddress
})
.ToListAsync();
var allClients = query
.Select(s => new Clients
{
Id = s.Id,
Name= s.Name,
Address = s.FullAddress
});
return _clientsList;
}
}
}
2条答案
按热度按时间f4t66c6m1#
由于Address实体具有属性
address.ClientId
,并且客户端模型包含属性Address
地址模型和客户端模型具有一对一的关系
您可以选中此document并选择一个解决方案来读取相关数据
例如:
现在你可以通过navigation属性读取read fulladdress:
您是否尝试过以下方法:
我在客户端实体中添加了一个属性
结果:
nkoocmlb2#
如果您的MainDbContext中有
DbSet<Clients> ClientsTbl
,那么您可以像这样简单地返回它。我不确定您使用
string Address
在AddressTbl
上加入是否正确。如果您希望将
Clients
与Addresses
一起返回,则最好在它们之间创建一个Relationship。喜欢
然后,您将需要一个迁移来将新的关系应用到数据库。这也适用于数据库优先的方法。
然后你可以像@RuikaiFeng建议的那样,把你的客户和地址一起返回。
请检查EF Core Docs关于这一点。