此代码会导致双重记录...... 我检查了所有表的插入代码,它工作正常......
这是插入代码:
StoreDO store = new StoreDO();
List<BrandDO> brandList = new BrandBL().SelectBrands();
StoreBL storeBL = new StoreBL();
store.StoreName = txtStoreName.Text;
store.StorePhone = txtStorePhone.Text;
store.StoreAddress = txtStoreAddress.Text;
store.CityID = int.Parse(ddlCity.SelectedValue);
store.CountyID = int.Parse(ddlCounty.SelectedValue);
store.IsActive = chkIsActive.Checked;
int storeID = storeBL.InsertStore(store);
ContentPlaceHolder contentPlaceHolder = (ContentPlaceHolder)Master.FindControl("ContentPlaceHolder1");
for (int i = 0; i < brandList.Count; i++) {
string brandName = brandList[i].BrandName.ToString() + brandList[i].BrandID.ToString();
StoreBrandBL storeBrandBL = new StoreBrandBL();
CheckBox chkBrand = (CheckBox)contentPlaceHolder.FindControl(brandName);
if (chkBrand != null) {
if (chkBrand.Checked) {
StoreBrandDO storeBrandDO = new StoreBrandDO();
storeBrandDO.StoreID = storeID;
storeBrandDO.BrandID = brandList[i].BrandID;
storeBrandDO.IsActive = true;
storeBrandBL.InsertStoreBrand(storeBrandDO);
}
}
}
答案 0 :(得分:1)
应避免在代码中复制数据库中的行,并在数据库中对其进行保护。
由于hwcverwe
表示您可以使用表约束,但您还应该尝试为每个表正确设置主键。
如果您在所有表上使用代理键(例如我在代码中看到的StoreID
和BrandID
),那么您将不得不使用唯一表约束来防止重复数据。正确配置数据库也会显示代码中的问题区域,因为数据库在插入失败时会抛出异常。
编辑:如果您询问CheckBox控件,在回复您的评论时,您的问题标题不正确。
查看代码时,您正试图在ContentPlaceholder
中找到一个复选框控件,但是您没有显示创建复选框的代码。