C# 检查复合主键重复(扩展CheckNoExists方法)
Form实现(方式1)
该方式采用前端检查,适合一种客户端平台使用。
点【保存】按钮检查复合主键重复。
C# 全选
//保存前检查数据完整性
protected override bool ValidatingData()
{
//多个输入项检查。若检查不通过,文本框右侧显示红色X图标
var isInvalid = false
| CommonTools.IsInvalid(txtMainUnit)
| CommonTools.IsInvalid(txtSubUnit)
| CommonTools.IsInvalid(txtQuantity);
if (isInvalid) return false;
if (this.IsAddMode)
{
var exists = _BLL.CheckNoExists(txtMainUnit.EditValue.ToStringEx(), txtSubUnit.EditValue.ToStringEx());
if (exists)
{
Msg.Warning("大小单位换算定义重复!");
return false;
}
}
return true;
}
DAL层实现
C# 全选
/// <summary>
/// 检查复合主键是否重复
/// </summary>
/// <param name="mainUnit">大单位</param>
/// <param name="subUnit">小单位</param>
/// <returns></returns>
public bool CheckNoExists(string mainUnit, string subUnit)
{
var q = _Database.GetQueryable<dt_Unit>();
return q.Any(w => w.MainUnit == mainUnit && w.SubUnit == subUnit);
}
测试1
DAL层实现(方式2)
该方式采用后端DAL层抛出异常方式,适合多个跨平台客户端使用,如使用WebApi后台。
注意:使用此方式不需要实现CheckNoExists方法。
重写 Update 方法:
C# 全选
/// <summary>
/// 通用保存数据的方法
/// </summary>
/// <param name="data">当前提交的数据</param>
/// <returns></returns>
public override bool Update(MasterDataUpdate<dt_Unit> data)
{
if (data.listAdded.Count > 0)
{
var row = data.listAdded.FirstOrDefault();
var q = _Database.GetQueryable<dt_Unit>();
var exists= q.Any(w => w.MainUnit == row.MainUnit && w.SubUnit == row.SubUnit);
if (exists) throw new CustomException("大小单位换算定义重复!");
}
return base.Update(data);
}
测试2
版权声明:本文为开发框架文库发布内容,转载请附上原文出处连接
NewDoc C/S框架网