一对多关系LINQ更新查询

One to many relationship LINQ update query

我有一对多/多对多关系 b/w UserProfile & AddressMaster 到中间 table 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; }
    }

现在我正在尝试输入从 API 到 JSON 的数据:

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

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

谢谢:)

看起来因为没有任何答案,在查看了一些例子之后,我认为我的问题本身的答案是正确的方法。

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

如果实体配置已经使用 fluent API 配置(many-to-many 现在需要配置 fluent API)映射 AddressIDUserID 作为UserAddress table.

的外键

现在,您将各自的数据分别映射到 AddressMasterUserProfile table 中,并将其添加到上下文中。

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

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