一对多关系 LINQ 更新查询

One to many relationship LINQ update query

提问人:Neo 提问时间:7/12/2020 最后编辑:Neo 更新时间:8/11/2020 访问量:357

问:

我有一个一对多/多对多关系黑白和中间表。UserProfileAddressMasterUserAddress

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;
        }

我正在尝试将数据单独存储到各自的表中,然后尝试将其映射到中间表。我不确定这是否是正确的方法,但数据正在存储在数据库中。

谢谢:)

asp.net 实体框架 asp.net-core net-core ef-core-3.0

评论

0赞 Selim Yildiz 7/12/2020
我不清楚这个问题。您想要表示(可以反序列化)这 3 个对象的 JSON 吗?
0赞 Neo 7/12/2020
json 在控制器上接收,我的 dto 获取数据。我想从那里将数据保存到表中。 同样,我也得到了地址。不知道将数据保存到所涉及的 3 个表的 linq。UserProfile userProfile = new UserProfile {Name = requestDto.Name}
0赞 Gert Arnold 7/12/2020
的值是什么以及何时将它们分配给?addressMaster.AddressIDuserEntity.UserIDnew UserAddresses
0赞 Mohammad Barbast 7/12/2020
我建议你阅读 Ultimate Asp.Net Core 3 Web API 一书。这本书非常有效。我认为这就是你需要的。我不是图书广告商,只是一个读者。
0赞 Neo 7/12/2020
@GertArnold这是一个指导。它不是 null。

答:

0赞 Neo 8/11/2020 #1

看起来由于没有任何答案,并且在查找了一些示例后,我认为我的问题本身的答案是正确的方法。

考虑要输入的记录:AddressMaster <---> UserAddress <---> UserProfile

前提是实体配置已使用 Fluent API(现在需要多对多配置 Fluent API)映射进行配置,并作为 UserAddress 表的外键进行配置。AddressIDUserID

现在,您将相应的数据分别映射到 和 表中,并将其添加到上下文中。AddressMasterUserProfile

            var userEntity = new UserProfile
            {                   
                Name = request.Name,                         
            };
            _context.UserProfile.Add(userEntity);
            
            AddressMaster addressMaster = request.Address;
            
            _context.AddressMaster.Add(addressMaster);

现在,将这些输入的实体映射到实体并保存更改。UserAddresses