【问题标题】:One to many relationship LINQ update query一对多关系 LINQ 更新查询
【发布时间】:2020-11-01 13:50:57
【问题描述】:

我有一个一对多/多对多的关系 b/w 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;
        }

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

谢谢:)

【问题讨论】:

  • 这个问题我不清楚。您想要表示(可以反序列化)这 3 个对象的 JSON 吗?
  • 控制器接收到json,我的dto获取数据。我想从那里将​​数据保存到表中。 UserProfile userProfile = new UserProfile {Name = requestDto.Name} 同样,我也得到了地址。不知道将数据保存到所涉及的 3 个表的 linq。
  • addressMaster.AddressIDuserEntity.UserID 分配给new UserAddresses 时的值是多少?
  • 我建议你阅读Ultimate Asp.Net Core 3 Web API 的书。这本书非常有效。我认为这就是你所需要的。我不是图书广告商,只是一个读者。
  • @GertArnold 它是一个向导。它不为空。

标签: asp.net entity-framework asp.net-core .net-core ef-core-3.0


【解决方案1】:

看起来因为没有任何答案,在查找了一些示例之后,我认为我的问题中的答案本身就是正确的继续。

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

如果实体配置已经使用 fluent API 进行配置(现在需要多对多配置 fluent API)将AddressIDUserID 作为外键映射到 UserAddress 表。

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

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-10-04
    • 2021-01-30
    • 1970-01-01
    相关资源
    最近更新 更多