【发布时间】:2015-11-25 12:00:08
【问题描述】:
我正在努力避免在我当前的项目中使用大型对象, 而我希望上传数据集合以填充 SQL Server 表
我正在计划使用 SqlBulkCopy(替代方案也可以是带有表值参数的 Sproc,但这不是我当前问题的范围)
因为该方法接受DataTable 或SqlDataReader
我想知道我是否可以这样做:
public struct tblCarOb
{
public String Model;
public Int32 Year;
}
因为我更喜欢结构而不是类对象,所以它可以是一个类。
List<tblCarOb> tcoLst = new List<tblCarOb>(){ new tblCarObj(){ Model = "A", Year= 2010 }};
using (sqlConnection ...)
{
use Reader to read form tcoLst or tblCarOb[]
}
所以我可以避免使用更复杂的DataTable
问题是可以以某种方式完成吗?
更新
public struct tblCarOb
{
public String Model;
public Int32 Year;
}
- 这个想法很简单,将任何对象创建为上面的代码
- 不使用
EntityFrameWork - 就我而言,我不需要删除/创建 SQL Server 表
- 在我的例子中,我创建的 C# 表对象在 SQL Server 中有一个对应的表
- 我不喜欢像
DataTable那样使用反射 - ** 添加另一个类来实现它是可以的,但不是一个具有 100K 行的整个 DLL,因为其想法是最小化占用空间。
目的是尽量减少开销和性能损失。
提前致谢
【问题讨论】:
-
是的,可以做到。这可能是 stackoverflow.com/q/2258310/1048425 的副本,但还不足以结束这个问题。可以在此处找到将 IEnumarable 公开为 IDataReader 的包装类的另一个示例code.msdn.microsoft.com/ObjectDataReader-8476dd72,
标签: c# sql performance generics sqldatareader