相关疑难解决方法(0)

你能从SqlDataReader获取列名吗?

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

c# ado.net sqldatareader

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

异步迭代器任务<IEnumerable <T >>

我正在尝试实现一个返回迭代器的异步函数.这个想法如下:

    private async Task<IEnumerable<char>> TestAsync(string testString)
    {
        foreach (char c in testString.ToCharArray())
        {
            // do other work
            yield return c;
        }
    }
Run Code Online (Sandbox Code Playgroud)

但是,有一个错误消息,该函数不能是迭代器块,因为Task<IEnumerable<char>>它不是迭代器接口类型.有解决方案吗?

.net c# clr iterator asynchronous

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

如何从数据库中读取动态属性

我将尽力以最好的方式解释我的情景.我的数据库中有以下表格:

Products{ProductId, CategoryId ...}
Categories{CategoryId ...}
CategoryProperties{CategoryPropertyId, CategoryId, Name ...}
PropertyValues{ProductId, CategoryPropertyId, Value ...}
Run Code Online (Sandbox Code Playgroud)

因此,目标是拥有属于某个类别的产品列表,每个类别可以在"PropertyValues"表中包含具有值的"n"个属性.我有一个基于'categoryId'返回数据的查询,所以我总能从数据库中得到不同的结果:

对于CPU类别:

intel i7 | CPU | Model | Socket | L1 Cash | L2 Cahs | etc.
Run Code Online (Sandbox Code Playgroud)

对于HDD类别:

samsung F3 | HDD | Model | Speed | GB | etc.
Run Code Online (Sandbox Code Playgroud)

因此,根据我的查询中的类别,我总是可以得到不同的列号和名称.对于数据库访问,我使用简单的ADO.NET调用返回结果的存储过程.但是因为查询结果本质上是动态的,所以我不知道读取这些数据的好方法是什么.

我做了一个Product实体,但我很困惑如何使其真正:( 我认为我可以做一个Product实体,使该其他实体继承 Product一样Cpu,Hdd,Camera,PcCase,GraphicCard,MobilePhone,Gps

,但我认为这是愚蠢的,因为我可以结束这与域中有200多个实体.

在这种情况下你会做什么?
如何阅读和放置这个动态属性

更新 …

c# ado.net data-access-layer sqldatareader

6
推荐指数
1
解决办法
1556
查看次数

通用 DbDataReader 到 List&lt;T&gt; 映射

我的属性绑定数据访问类有一个小问题(更像是一个烦恼)。问题是当读取器中不存在类中相应属性的列时,映射会失败。

代码

这是映射器类:

// Map our datareader object to a strongly typed list
private static IList<T> Map<T>(DbDataReader dr) where T : new()
{
    try
    {
        // initialize our returnable list
        List<T> list = new List<T>();
        // fire up the lamda mapping
        var converter = new Converter<T>();
        while (dr.Read())
        {
            // read in each row, and properly map it to our T object
            var obj = converter.CreateItemFromRow(dr);
            // add it to our list
            list.Add(obj);
        }
        // reutrn it
        return list;
    } …
Run Code Online (Sandbox Code Playgroud)

c# reflection expression-trees dbdatareader linq-expressions

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