提问人:Neo 提问时间:7/12/2020 最后编辑:Neo 更新时间:8/11/2020 访问量:357
一对多关系 LINQ 更新查询
One to many relationship LINQ update query
问:
我有一个一对多/多对多关系黑白和中间表。UserProfile
AddressMaster
UserAddress
public class UserProfile
{
public string UserID { get; set; }
public string Name{ get; set; }
public ICollection<UserAddress> UserAddress{ get; set; }
}
public class AddressMaster
{
public string AddrID{ get; set; }
public string AddressLine1{ get; set; }
public ICollection<UserAddress> UserAddress{ get; set; }
public TheatreLocation TheatreLocation { get; set; }
}
public class UserAddress
{
public Guid UserID { get; set; }
public Guid AddressID { get; set; }
public UserProfile UserProfile{ get; set; }
public AddressMaster AddressMaster { get; set; }
}
现在我正在尝试通过JSON从API输入数据:
{
"Name": "Neo",
"address":
{
"addressLine1": "House not"
}
}
为此,我有一个 DTO 来获取这些参数。下面是我的控制器代码。
public async Task<Guid> Handle(CreateUserCommand request, CancellationToken cancellationToken)
{
var userEntity = new UserProfile
{
Name = request.Name,
};
_context.UserProfile.Add(userEntity);
AddressMaster addressMaster = request.Address;
_context.AddressMaster.Add(addressMaster);
UserAddresses userAddresses = new UserAddresses
{
AddressID = addressMaster.AddressID,
UserID = userEntity.UserID
};
_context.UserAddresses.Add(userAddresses);
await _context.SaveChangesAsync(cancellationToken);
return userEntity.UserID;
}
我正在尝试将数据单独存储到各自的表中,然后尝试将其映射到中间表。我不确定这是否是正确的方法,但数据正在存储在数据库中。
谢谢:)
答:
0赞
Neo
8/11/2020
#1
看起来由于没有任何答案,并且在查找了一些示例后,我认为我的问题本身的答案是正确的方法。
考虑要输入的记录:AddressMaster
<---> UserAddress
<---> UserProfile
前提是实体配置已使用 Fluent API(现在需要多对多配置 Fluent API)映射进行配置,并作为 UserAddress 表的外键进行配置。AddressID
UserID
现在,您将相应的数据分别映射到 和 表中,并将其添加到上下文中。AddressMaster
UserProfile
var userEntity = new UserProfile
{
Name = request.Name,
};
_context.UserProfile.Add(userEntity);
AddressMaster addressMaster = request.Address;
_context.AddressMaster.Add(addressMaster);
现在,将这些输入的实体映射到实体并保存更改。UserAddresses
评论
UserProfile userProfile = new UserProfile {Name = requestDto.Name}
addressMaster.AddressID
userEntity.UserID
new UserAddresses