C# 插入方法的行为不符合预期

C# 插入方法的行为不符合预期,c#,sql,visual-studio-2012,strongly-typed-dataset,dataset-designer,C#,Sql,Visual Studio 2012,Strongly Typed Dataset,Dataset Designer,我只使用VS2012 express为我的应用程序创建了整个数据库(我使用的是localdb),因此它可以创建数据库以及为我的应用程序创建数据集和表适配器。到目前为止效果很好。我还制作了包装器类来允许异步数据库读取,这也非常有效 在designer中查看我的表适配器,当我添加插入方法(例如在Races表上)时,它使用了以下查询: INSERT INTO Races (ChampionshipID, Driver1, Driver2, RaceTime) VALUES (@Champ

我只使用VS2012 express为我的应用程序创建了整个数据库(我使用的是localdb),因此它可以创建数据库以及为我的应用程序创建数据集和表适配器。到目前为止效果很好。我还制作了包装器类来允许异步数据库读取,这也非常有效

在designer中查看我的表适配器,当我添加插入方法(例如在
Races
表上)时,它使用了以下查询:

INSERT INTO Races (ChampionshipID, Driver1, Driver2, RaceTime)
VALUES        (@ChampionshipID,@Driver1,@Driver2,@RaceTime); 
SELECT ID, ChampionshipID, Driver1, Driver2, RaceTime FROM Races WHERE (ID = SCOPE_IDENTITY())
我看到它在返回刚才插入的行之后执行了一个select。这正是我所需要的。但是,它生成的实际方法具有以下特征:

int Insert1(long ChampionshipID、long Driver1、long Driver2、DateTime RaceTime)

它返回的是一个
int
,而不是预期的
DataRow
DataTable
,也不会将
DataTable
作为参数插入


我做错什么了吗?如何实现此功能?

答案是否定的,因为insert方法使用
ADO.NET
excecutenquery
方法,这就是为什么insert方法返回插入记录id的
int


您可以在插入后尝试查询类似于
select@@identity
的内容,以便以后能够获取记录。

为了澄清,select确实将行读回数据集中,但不会将行返回给调用程序。这意味着插入更新的任何标识或时间戳字段都可以在数据集中读取。是的,我尝试将执行类型更改为
Reader
,这打破了一切,这是关于一个自定义工具具有
NullReferenceException
。我来试一试,谢谢:)