相关疑难解决方法(0)

你能从SqlDataReader获取列名吗?

连接到数据库后,我可以获取在我的所有列中返回的列的名称SqlDataReader吗?

c# ado.net sqldatareader

265
推荐指数
7
解决办法
21万
查看次数

从'System.Int32'到'System.Nullable`1 [[System.Int32,mscorlib]]的无效演员表

Type t = typeof(int?); //will get this dynamically
object val = 5; //will get this dynamically
object nVal = Convert.ChangeType(val, t);//getting exception here
Run Code Online (Sandbox Code Playgroud)

我在上面的代码中得到了InvalidCastException.对于上面我可以简单地写int? nVal = val,但上面的代码是动态执行.

我得到一个包含在一个对象(这里是val)中的值(非可空类型,如int,float等),我必须通过将它转换为另一个类型(可以是或不可以为空的版本)将其保存到另一个对象它).什么时候

从'System.Int32'到'System.Nullable`1 [[System.Int32,mscorlib,Version = 4.0.0.0,Culture = neutral,PublicKeyToken = b77a5c561934e089]]'的无效演员表.

一个int,应该是可兑换的/可浇铸的nullable int,这里有什么问题?

.net c# casting nullable type-conversion

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

将数据读取器中的行转换为键入的结果

我正在使用第三方库来返回数据阅读器.我想要一个简单的方法,并尽可能通用将其转换为对象列表.
例如,假设我有一个具有2个属性EmployeeId和Name的类'Employee',我希望将数据读取器(包含员工列表)转换为List <Employee>.
我想我别无选择,只能迭代数据阅读器的各行,并为每一行将它们转换为我将添加到List的Employee对象.更好的解决方案?我正在使用C#3.5,理想情况下我希望它尽可能通用,以便它适用于任何类(DataReader中的字段名称与各种对象的属性名称匹配).

c# datareader list

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

在.NET Core中使用DataTable

我在SQL Server中有一个存储过程,它接受用户定义的表类型.我正在按照这篇文章的答案从C#list批量插入SQL Server到多个表,其中包含有关如何将DataTable发送到SQL中的存储过程的外键重量.

但是当我创建时,DataTable table = new DataTable();我得到了一个错误DataTable does not contain a constructor that takes 0 arguments.

我发现这个https://github.com/VahidN/EPPlus.Core/issues/4基本上说DataTable在.NET Core中不再支持.那么现在怎么办?如何创建DataTable(或者它的替代品是什么)?如何将用户定义的表类型发送到.NET Core上的SQL Server?

c# datatable .net-core asp.net-core asp.net-core-1.0

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

SQL Server最快的插入,更新和选择方法

我使用SP,这不是SP vs代码隐藏"构建您的SQL命令"问题.我正在寻找一种处理许多小事务的后端应用程序的高吞吐量方法.我使用SQLDataReader进行大部分返回,因为转发仅适用于大多数情况.

我已经看到它做了很多种方式,并且我自己也使用了大部分方法.

  1. 定义和接受存储过程参数作为参数本身的方法,并使用cmd.Parameters.Add构建(使用或不指定DB值类型和/或长度)

  2. 将SP参数及其值组装到数组或散列表中,然后传递给一个更抽象的方法来解析集合,然后运行cmd.Parameters.Add

  3. 表示表的类,根据需要初始化类,设置表示表字段的公共属性,以及调用Save,Load等方法

我确信还有其他我见过但现在也想不到的.我对所有建议持开放态度.

c# sql-server asp.net ado.net

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

填充数据表时,datareader是否比数据集更快?

哪个会更快.

1)循环datareader并基于填充的数据表创建自定义行和列

2)或者创建一个dataAdapter对象并且只是(填充)一个数据表.

在动态创建数据表时,数据加载器的性能是否仍然适用?

.net datatable performance datareader dataadapter

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

如何将sqlDatareader转换为List <>

可能重复:
如何轻松地将DataReader转换为List <T>?

我想返回将存储sqldatareader值的列表.我怎样才能做到这一点..

c#

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

如何改进数据访问层选择方法模式

最近我发现自己编写数据访问层选择方法,其中代码都采用这种通用形式:

public static DataTable GetSomeData( ... arguments)
{
    string sql = " ... sql string here:  often it's just a stored procedure name ... ";

    DataTable result = new DataTable();

    // GetOpenConnection() is a private method in the class: 
    // it manages the connection string and returns an open and ready connection
    using (SqlConnection cn = GetOpenConnection())
    using (SqlCommand cmd = new SqlCommand(sql, cn))
    {
        // could be any number of parameters, each with a different type
        cmd.Parameters.Add("@Param1", SqlDbType.VarChar, 50).Value …
Run Code Online (Sandbox Code Playgroud)

.net data-access-layer .net-2.0

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

如何将DataReader映射到类属性并保持性能?

前言:

  1. 使用DbProviderFactories创建所有数据连接字符串,连接等.
  2. 代码是来自多个库的C#和VB.Net混合.

我正在将DbDataReader映射到实体并具有一些基准:

[0] retrieved 159180 records in 45135 ms
[1] retrieved 159180 records in 45008 ms
[2] retrieved 159180 records in 44814 ms
[3] retrieved 159180 records in 44987 ms
[4] retrieved 159180 records in 44914 ms
[5] retrieved 159180 records in 45224 ms
[6] retrieved 159180 records in 45829 ms
[7] retrieved 159180 records in 60762 ms
[8] retrieved 159180 records in 52128 ms
[9] retrieved 159180 records in 47982 ms  
Run Code Online (Sandbox Code Playgroud)

考虑到从Sql Server Management Studio查询只需要17秒,这是一个非常大的时间和极差.我的选择声明:

"SELECT*FROM tbl_MyTable" …

c# reflection datareader

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

将AutoMapper与数据读取器配合使用

我经历了如何轻松地将DataReader转换为List <T>?

我希望在上面的链接中实现类似于接受的内容.

Scenrio:

我正在使用OdbcDataReader从数据库中检索.

我有一个模型类.仅供参考,此类的属性是数据库中列名的精确副本.我需要将这些列映射到属性并返回List这可以使用Automapper完成.

.net c# automapper asp.net-mvc-4

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