Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/317.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 整洁的Orm删除异常_C#_Dapper - Fatal编程技术网

C# 整洁的Orm删除异常

C# 整洁的Orm删除异常,c#,dapper,C#,Dapper,我正试着用简洁的orm删除。但我有一个例外: 使用多重映射API时,请确保在以下情况下设置splitOn参数 你有身份证以外的钥匙 我的代码如下所示: public void DeleteRole(int ID) { using (var conn = new SqlConnection(connectionString)) { conn.Open(); conn.Query("DELETE FROM [Ro

我正试着用简洁的orm删除。但我有一个例外:

使用多重映射API时,请确保在以下情况下设置splitOn参数 你有身份证以外的钥匙

我的代码如下所示:

public void DeleteRole(int ID)
    {
        using (var conn = new SqlConnection(connectionString))
        {
            conn.Open();
            conn.Query("DELETE FROM [Role] WHERE ID=@ID", new {ID=ID });
        }
    }

有什么想法吗?

这里的问题是您使用的是
Query
而不是
Execute
Query
方法正在尝试查找名为
Id
的列以生成结果集,但无法找到,因为它不是查询。

请为查询指定返回类型(整数)

int rowscont=conn.Query(“从[Role]中删除,其中ID=@ID”,新的{ID});
或者使用Execute方法,正如Michael指出的那样

注意:您不需要手动打开连接-Dapper将为您打开连接

顺便说一句,一般查询适用于您的原始问题:

int id = conn.Query<int>(@"INSERT [Role] (Name, CreatedDate,UpdatedDate) 
                           VALUES (@Name, @CreatedDate,@UpdatedDate) 
                           SELECT CAST(scope_identity() as INT)", model).First();
int id=conn.Query(@“插入[角色](名称、创建日期、更新日期)
值(@Name、@CreatedDate、@updateDate)
选择CAST(scope_identity()as INT)”,model.First();

编辑时,代码发生了巨大变化。这就是正在抛出的代码吗?为什么在这里使用
Query
而不是
Execute
?我更新了我的代码。我以前发布了错误的代码。+1,因为受影响的行数可能是一个很好的返回值。@MichaelPerrenoud谢谢:)已经对您的答案进行了投票,因为它正确且执行返回整数(受影响的行数)。参数化查询更适合使用SELECT语句的原始问题
int id = conn.Query<int>(@"INSERT [Role] (Name, CreatedDate,UpdatedDate) 
                           VALUES (@Name, @CreatedDate,@UpdatedDate) 
                           SELECT CAST(scope_identity() as INT)", model).First();