Как вставить данные в две таблицы на основе параметров - PullRequest
0 голосов
/ 22 апреля 2019

У меня есть две сущности

public class ProductOption
{
        [Key]
        [DatabaseGenerated(DatabaseGeneratedOption.Identity)]
        public int OptionId { get; set; }

        [Required]
        [MaxLength(40)]
        public String OptionName { get; set; }
}


public class ProductOptionValue
{
        [Key]
        [DatabaseGenerated(DatabaseGeneratedOption.Identity)]
        public int ValueId { get; set; }
        public int OptionId { get; set; }

        [Required]
        [MaxLength(32)]
        public String ValueName { get; set; }
 }

ВЫШЕ сущностей

  1. Необязательно - Основной ключ (таблица ProductOption)
  2. Необязательно --foreignkey (таблица ProductOptionValue)

У меня есть 2 класса моделей

 public class ProductOptionRequest
 {
     public string Name { set; get; }
     public List<ProductValuesRequest> productValues { get; set; }
 }

 public class ProductValuesRequest
 {
     public int OptionId { get; set; }
     public string ValueName { get; set;}
 }

Теперь я хочу вставить данные в эти таблицы

public async Task<ReturnString> SaveProductOption(ProductOptionRequest request)
{
            ReturnString returnString = new ReturnString();
            ProductOption details = new ProductOption();
            details.OptionName = request.Name;
            object result = await productOptionRepository.InsertAsync(details, true);
            foreach (ProductValuesRequest valueRequest in request.productValues)
            {
                ProductOptionValue res = new ProductOptionValue();
                res.OptionId = valueRequest.OptionId;
                res.ValueName = valueRequest.ValueName;
                object response = await productOptionValueRepository.InsertAsync(res, true);
            }
            returnString.StringValue = result != null ? $"{request.Name} saved successfully" : "";
            return returnString;                         
  }

Я написал выше шаблон.но я не хочу передавать OptionId.Как написать один запрос вставки без передачи параметра OptionId.Потому что его внешний ключ таблицы ProductOption.

1 Ответ

0 голосов
/ 22 апреля 2019

// Попробуйте этот код, пожалуйста.

 public class ProductOptionValue
    {
    [Key]
    [DatabaseGenerated(DatabaseGeneratedOption.Identity)]
    public int ValueId { get; set; }
    public int OptionId { get; set; }

    [Required]
    [MaxLength(32)]
    public String ValueName { get; set; }

    [RelatedField(Table = "ProductOption", ForeignKey = "OptionId", PrimaryKey="Id")]
    public ProductOption ProductOption{ get; set; }
}



    public async Task<ReturnString> SaveProductOption(ProductOptionRequest request)
       {
        ReturnString returnString = new ReturnString();

        foreach (ProductValuesRequest valueRequest in request.productValues)
        {
            ProductOption details = new ProductOption();
            details.OptionName = request.Name;
            ProductOptionValue res = new ProductOptionValue();
            res.ValueName = valueRequest.ValueName;
            res.ProductOption =result ;
            object response = await 
            productOptionValueRepository.InsertAsync(res, true);
          }
            returnString.StringValue = result != null ? $"{request.Name} saved successfully" : "";
         return returnString;          
 }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...