C# ASP.NET调用DataAdapter填充会创建重复的条目
这种奇怪的行为始于今天: 代码非常简单:(C#4.5) bool connopend=OpenConnectiontoDB() 如果直接运行存储过程spGetCountries(以DB为单位),则会得到单个值:C# ASP.NET调用DataAdapter填充会创建重复的条目,c#,asp.net,sql-server,C#,Asp.net,Sql Server,这种奇怪的行为始于今天: 代码非常简单:(C#4.5) bool connopend=OpenConnectiontoDB() 如果直接运行存储过程spGetCountries(以DB为单位),则会得到单个值: ALTER PROCEDURE [dbo].[spGetCounties] AS BEGIN SET NOCOUNT ON; SELECT c.tblCountyName,c.tblCountyID FROM tblCounty c ORD
ALTER PROCEDURE [dbo].[spGetCounties]
AS
BEGIN
SET NOCOUNT ON;
SELECT c.tblCountyName,c.tblCountyID
FROM
tblCounty c
ORDER BY
c.tblCountyName asc
END
tblCounty不包含任何重复值
如果我运行C#代码,我会查看我看到的DSC的值
A
A
B
B
C
C
...
我在page_load事件中调用存储过程
DataSet dsCounties = new DataSet();
dsCounties = busLayer.GetCounties();
但当我查看数据库层代码时,这并不重要,dscountry的值为null,并且只要da.Fill(dscountries)运行,我就会在dscountries中看到重复的值
============================================
更新:
在浪费了2个小时的时间并试图精简代码并将其与以前的版本进行比较后,我意识到这种行为是由于其他人犯了一个简单但愚蠢的错误造成的
1:一个新开发人员更改了Dev-side配置文件以指向生产数据库
2:我们光荣的DB管理员将每行复制两次到生产中!!!我无法想象这是怎么发生的,忘记了将县ID作为主键
很抱歉,如果这个问题浪费了您的时间。在页面加载方法中,它将在每次加载页面时添加数据。 您需要添加
if(!PostBack)
{
DataSet dsCounties = new DataSet();
dsCounties = busLayer.GetCounties();
}
如果它是回发的,则表示它以前已加载。如果没有,则需要对数据集进行初始化。好,我更新问题,我在内部调用它!发回。如果你看一下我的问题,我说我看一下数据层C代码本身,我看到dscounty为null,调用sp后它包含重复的值。这与页面无关这都是C#这不是我的代码,请参见我的编辑。我感谢你花时间帮助+1。我会接受你的回答,因为这是最有可能发生的情况。
if(!PostBack)
{
DataSet dsCounties = new DataSet();
dsCounties = busLayer.GetCounties();
}