Запрос на обновление LINQ отношения "один ко многим" - PullRequest
2 голосов
/ 12 июля 2020

У меня есть отношение один-ко-многим / многие-ко-многим ч / б 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; }
    }

Теперь я пытаюсь ввести данные из 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;
        }

Я пытаюсь сохранить данные индивидуально в соответствующих таблицах, а затем попытался сопоставить их с промежуточной таблицей. Я не уверен, что это правильный путь, но данные сохраняются в базе данных.

Спасибо :)

1 Ответ

0 голосов
/ 10 августа 2020

Похоже, поскольку ответа не было, и после просмотра нескольких примеров я решил, что ответ в моем вопросе - это правильный способ продолжить. 1003 * <---> UserAddress <---> UserProfile

При условии, что конфигурация объекта уже настроена с использованием свободного API (на данный момент требуется настроить свободный API для многих-ко-многим) AddressID и UserID в качестве внешнего ключа для таблицы UserAddress.

Теперь вы индивидуально сопоставляете соответствующие данные с таблицами AddressMaster и UserProfile и добавляете их в контекст.

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

Теперь вы сопоставляете эти введенные сущности с сущностью UserAddresses и сохраняете изменения.

...