天天看點

freeSql一對多 oneToMany執行個體

一:公司

public partial class ItemCompanyEntity : EntityFull

{

   /// <summary>

   /// 工程ID

   /// </summary>

   [Column(StringLength =20)]

   public long ProjectId { get; set; }

   /// <summary>

   /// 項目公司名稱

   /// </summary>

   [Column(StringLength = 50)]

   public string ItemCompanyName { get; set; }

   /// <summary>

   /// 供應商清單

   /// </summary>

   ///  

   [Navigate(nameof(ItemProviderEntity.CompanyId))]

   public virtual List<ItemProviderEntity> Providers { get; set; }

}

二:供應商

/// <summary>

/// 供應商名稱

/// </summary>

[Table(Name = "ad_item_provider")]

[Index("idx_{tablename}_01", nameof(ItemProviderName))]

public partial class ItemProviderEntity : EntityFull

{

   /// <summary>

   /// 供應商名稱

   /// </summary>

   [Column(StringLength = 50)]

   public string ItemProviderName { get; set; }

   /// <summary>

   /// 項目公司ID

   /// </summary>

   public long CompanyId { get; set; }

實作方法:

  /// <summary>

   /// 項目公司名稱--新增

   /// </summary>

   /// <param name="input"></param>

   /// <returns></returns>

   [HttpPost]

   public async Task<IResultOutput> AddItemCompanyAsync(ItemCompanyAddDto input)

   {

       try

       {

           var entity = Mapper.Map<ItemCompanyEntity>(input);

           //  _companyRepository.DbContextOptions.EnableCascadeSave = true;  級聯儲存

           //  var tbref = _fsql.CodeFirst

           //.GetTableByEntity(typeof(ItemCompanyEntity))

           //.GetTableRef("Providers", true);  檢測導航屬性

           var id = (await _companyRepository.InsertAsync(entity)).Id;

           return ResultOutput.Result(id > 0);

       }

       catch (Exception ex)

       {

           return ResultOutput.NotOk(ex.Message);

       }

   }

   /// <summary>

   /// 項目公司名稱--修改

   /// </summary>

   /// <param name="input"></param>

   /// <returns></returns>

   [HttpPost]

   public async Task<IResultOutput> UpdateCompanyAsync(ItemCompanyUpdateDto input)

   {

       try

       {

           var entity = Mapper.Map<ItemCompanyEntity>(input);

           //var id = (await _companyRepository.UpdateAsync(entity));//級聯儲存預設是追加儲存

            await _companyRepository.SaveManyAsync(entity, "Providers");//對比表已存在的資料,計算出添加、修改、删除執行

           return ResultOutput.Result(true);

       }

       catch (Exception ex)

       {

           return ResultOutput.NotOk(ex.Message);

       }

繼續閱讀