C# 如何防止运行时重复记录

C# 如何防止运行时重复记录,c#,asp.net,C#,Asp.net,此代码导致双记录。。。 我检查了所有表的插入代码,它工作正常 这是插入代码: StoreDO store = new StoreDO(); List<BrandDO> brandList = new BrandBL().SelectBrands(); StoreBL storeBL = new StoreBL(); store.StoreName = txtStoreName.Text; store.S

此代码导致双记录。。。 我检查了所有表的插入代码,它工作正常

这是插入代码:

        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);
                }
            }
        }
StoreDO store=newstoredo();
List brandList=新品牌BL()。选择品牌();
StoreBL StoreBL=新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(“ContentPlaceHolder 1”);
for(int i=0;i
应避免在代码中重复数据库中的行,并防止在数据库中重复

正如
hwcverwe
所说,您可以使用表约束,但也应该尝试为每个表正确设置主键

如果在所有表上使用代理键(例如代码中看到的
StoreID
BrandID
),则必须使用唯一的表约束来防止重复数据。正确配置数据库还将在代码中显示问题区域,因为当插入失败时,数据库将引发异常

编辑:在回复您的评论时,如果您询问复选框控件,则您的问题标题不正确


查看代码,您似乎试图在
ContentPlaceholder
中查找复选框控件,但未显示创建复选框的代码。

应避免在代码中重复数据库中的行,并防止在数据库中重复

正如
hwcverwe
所说,您可以使用表约束,但也应该尝试为每个表正确设置主键

如果在所有表上使用代理键(例如代码中看到的
StoreID
BrandID
),则必须使用唯一的表约束来防止重复数据。正确配置数据库还将在代码中显示问题区域,因为当插入失败时,数据库将引发异常

编辑:在回复您的评论时,如果您询问复选框控件,则您的问题标题不正确


查看代码,您似乎正在尝试在
ContentPlaceholder
中查找复选框控件,但您没有显示创建复选框的代码。

您可以通过对表列使用约束来防止双重记录。如果您还显示数据库中表的DDL,则会有所帮助。您可以通过对表列使用约束。如果您还显示数据库中表的DDL,这会有所帮助。几分钟前我看到了真正的问题。。添加空控件后无法获取chkboxes插入未发生。。。如何访问它们。。。这不是db或插入代码…@serim urhan:我已经添加到我的答案中,以回应您的评论我修复了chkbox问题非常感谢您,但我的双记录问题仍然存在,我该怎么办do@serimurhan:您是将数据存储在SQL数据库还是其他数据存储中?如果是SQL,您使用的是哪种数据库服务器(SQL server、Oracle、SQLite等),您可以发布您使用的表结构吗?@serim urhan:太好了,您的解决方案是什么?几分钟前我看到了真正的问题。。添加空控件后无法获取chkboxes插入未发生。。。如何访问它们。。。这不是db或插入代码…@serim urhan:我已经添加到我的答案中,以回应您的评论我修复了chkbox问题非常感谢您,但我的双记录问题仍然存在,我该怎么办do@serimurhan:您是将数据存储在SQL数据库还是其他数据存储中?如果是SQL,您使用的是哪种数据库服务器(SQL server、Oracle、SQLite等),您可以发布您使用的表结构吗?@serim urhan:太好了,您的解决方案是什么?