相关疑难解决方法(0)

有没有办法用Dapper调用存储过程?

对于stackoverflow.com 的Dapper Micro ORM的结果我印象非常深刻.我正在考虑我的新项目,但我有一个担心,有时我的项目需要有存储过程,我在网上搜索了很多但没有找到存储过程的任何东西.那么有没有办法让Dapper使用存储过程?

如果可能,请告诉我,否则我必须以我的方式延长它.

.net orm stored-procedures dapper

196
推荐指数
3
解决办法
11万
查看次数

小巧玲珑和SQL注入

Dapper如何帮助防止SQL注入?我正在测试不同的DAL技术,必须选择一个来保护我们的网站.我倾向于Dapper(http://code.google.com/p/dapper-dot-net/),但需要一些帮助来学习安全性.

.net orm .net-3.5 dapper

39
推荐指数
2
解决办法
2万
查看次数

插入带有Dapper错误的IEnumerable <T>集合,"Dapper不支持类".

是的,这里这里有关于如何使用dapper-dot-net插入记录的问题.然而,答案虽然提供了丰富的信息,但似乎并未将我指向正确的方向.情况如下:将数据从SqlServer移动到MySql.将记录读入一个IEnumerable<WTUser>很容易,但我只是没有在插入上得到一些东西.首先,'移动记录代码':

//  moving data
Dim session As New Session(DataProvider.MSSql, "server", _
                           "database")

Dim resources As List(Of WTUser) = session.QueryReader(Of WTUser)("select * from tbl_resource")


session = New Session(DataProvider.MySql, "server", "database", _
                      "user", "p@$$w0rd")

//    *edit* - corrected parameter notation with '@'
Dim strInsert = "INSERT INTO tbl_resource (ResourceName, ResourceRate, ResourceTypeID, ActiveYN) " & _
                "VALUES (@ResourceName, @ResourceRate, @ResourceType, @ActiveYN)"

Dim recordCount = session.WriteData(Of WTUser)(strInsert, resources)

//  session Methods
    Public Function QueryReader(Of TEntity As …
Run Code Online (Sandbox Code Playgroud)

c# vb.net insert dapper

32
推荐指数
1
解决办法
3万
查看次数

Dapper插入具有复合PK的表中

我有一个表有一个由两列组成的主键,这两列都没有自动递增,我的Dapper插入(Dapper Extensions的一部分)在插件上失败,说两列中的第一列不允许为null ,即使我传入的值也不是空的.

Student:

StudentId (PK, not null)   \_ (combined to form primary key)
StudentName (PK, not null) /
Active                     -- just another column
Run Code Online (Sandbox Code Playgroud)

C#:

public class Student {
  public int StudentId { get; set; }
  public string StudentName { get; set; }
  public bool Active { get; set; }
}

var newStudent = new Student { StudentId = 5, StudentName = "Joe", Active = true };
var insertSuccess = myConn.Insert<Student>(newStudent);
Run Code Online (Sandbox Code Playgroud)

错误:

无法将值NULL插入列'StudentId',表'dbo.Student'; 列不允许空值.INSERT失败.

Dapper由于某种原因没有获得StudentId值为5.我是否必须为具有组合PK的表或具有不 …

c# primary-key dapper dapper-extensions

8
推荐指数
3
解决办法
8857
查看次数

Dapper 的参数化更新和插入?

我在 Windows C# 表单应用程序中使用 Dapper。我注意到他们的大部分 CRUD 操作都以类名作为参数。例如下面的两个表:

    "Employee" Table
        Column Name  | Data Type |
        -------------------------
        EmpName      | string    |
        EmpNo        | string    |
        --------------------------

Employee.cs
[Table("Employee")]
public class Employee
{
   [Key]
   public string EmpNo {get;set;}
   public string EmpName {get;set;}
}

    "User" Table
        Column Name   | Data Type |
        -------------------------
        UserName      | string    |
        UserNo        | string    |
        --------------------------
User.cs
[Table("User")]
public class User
{
   [Key]
   public string UserNo {get;set;}
   public string UserName {get;set;}
}


    eg. var users= connection.Query<User>("select * …
Run Code Online (Sandbox Code Playgroud)

c# sql dapper

5
推荐指数
1
解决办法
1万
查看次数

为什么连接SQL字符串是一个坏主意?

我已经读过这样连接SQL字符串是个坏主意:

cmd.CommandText = "Insert INTO workers Values (" + User.Identity.Name + "," + WorkerName.Text + "," + GetUniqueWorkerKey() + ");";
Run Code Online (Sandbox Code Playgroud)

所以推荐的方法是:

cmd.CommandText = "Insert INTO workers Values (@Username, @WorkerName, @WorkerKey)";
cmd.Parameters.AddWithValue("@Username", User.Identity.Name);
cmd.Paramters.AddWithValue("@WorkerName", TheWorkerNameYouPassedToThisMethod);
Run Code Online (Sandbox Code Playgroud)

自从我读到它以来,我一直在避免连接SQL字符串,但我从未真正知道不这样做的理由.这个AddWithValue()方法最终不会在场景后面进行相同的字符串连接吗?

也许该方法剥离特殊字符并将字符转换为html实体以防止sql注入,但我可以在连接我的SQL之前完成所有这些,我也得到相同的效果,不是吗?或者是否有其他原因不练习SQL的字符串连接?

.net c# sql concatenation string-concatenation

4
推荐指数
1
解决办法
1806
查看次数

如何通过 Dapper 使用 Oracle 的整数参数列表?

我正在尝试重新编写一些代码以使用 Dapper,以便我可以轻松使用参数。我正在尝试在 Oracle 数据库上执行 UPDATE 语句。要更新的列表IDs作为参数传入List<int>。我想为每个IDs传入的字段更新一个字段。以下是我所拥有的:

OracleConnection connection = ... // set earlier

public int IncreaseProcessCount(List<int> ids)
{
    var rowsAffected = connection.Execute(@"UPDATE TABLE SET PROCESSED_COUNT = PROCESSED_COUNT + 1 WHERE ID IN @ids", new { ids });
    return rowsAffected;
}
Run Code Online (Sandbox Code Playgroud)

在使用 Dapper 之前,执行语句运行得很好。现在我收到以下错误:

ORA-00936: 缺少表达式。

我当前的解决方案基于以下帖子:

带有参数列表的 Dapper 查询以及 使用 Dapper 执行插入和更新

c# sql oracle sqlparameter dapper

4
推荐指数
1
解决办法
6711
查看次数