如何实现freeSql中一对多关系oneToMany的实例用法?

2026-04-30 20:1810阅读0评论SEO资讯
  • 内容介绍
  • 文章标签
  • 相关推荐

本文共计549个文字,预计阅读时间需要3分钟。

如何实现freeSql中一对多关系oneToMany的实例用法?

csharp一:公司+public+partial+class+ItemCompanyEntity+:+EntityFull+{ // 工程ID [Column(StringLength=20)] public long ProjectId { get; set; } // 项目公司名称 [Column(StringLength=50)] public string CompanyName { get; set; }}

一:公司

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

如何实现freeSql中一对多关系oneToMany的实例用法?


}

二:供应商

/// <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);

}

}


本文共计549个文字,预计阅读时间需要3分钟。

如何实现freeSql中一对多关系oneToMany的实例用法?

csharp一:公司+public+partial+class+ItemCompanyEntity+:+EntityFull+{ // 工程ID [Column(StringLength=20)] public long ProjectId { get; set; } // 项目公司名称 [Column(StringLength=50)] public string CompanyName { get; set; }}

一:公司

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

如何实现freeSql中一对多关系oneToMany的实例用法?


}

二:供应商

/// <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);

}

}