首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >使用SQL表信息填充C#结构的有效/快速方法是什么?

使用SQL表信息填充C#结构的有效/快速方法是什么?
EN

Stack Overflow用户
提问于 2012-01-08 11:24:07
回答 6查看 1.5K关注 0票数 0

简而言之:我有一些数据库表数据要用来填充c#结构。

例如:

代码语言:javascript
运行
复制
struct Phone
{
    public int PhoneID;
    public string Number;
}
struct Patient
{
    public Phone WorkPhone;
}

SQL表如下所示:

代码语言:javascript
运行
复制
Patient table:  
    Patient ID, Patient Name, etc.  
Phone table:  
    PhoneID, Number, Phone Type etc.  

基本上,结构是SQL表的镜像。

我有通过select语句传递的主键(PhoneID)。因此,对于patient表,我将只检索一行,对于Phone表,我将最多检索5行(它们可以包含WorkCellHome等)。

我没有一个很好的方法来轻松地将这个表填充到一个结构中。我现在做的是一个接一个。你可以看到每个病人有数百个变量,这是一个非常乏味和高度代码密集型的过程。有没有办法,也许我可以在变量名中有一个变量,例如,如果列名是Phone,那么它就会填充Phone变量。希望这是有意义的。

代码语言:javascript
运行
复制
query = "SELECT * FROM Phone p WHERE p.StatusID = 'A' AND ObjectTypeID = 'PA' AND ObjectID = '" + PatientID.ToString() + "'";
SqlDataAdapter a1 = new SqlDataAdapter(query, dataConnection);
DataTable t1 = new DataTable();
a1.Fill(t1);
DataTableReader r1 = t.CreateDataReader();
//object value = null;
while (reader.Read())
{
    for (int i = 0; i < r1.FieldCount; i++)
    {
        if (!r1.IsDBNull(i))
        {
            if reader.GetValue(i)
            switch (r1.GetName(i))
            {
                case "PhoneID": { pr.HomePhone.PhoneID = (int)reader.GetValue(i); break; }
                case "PhoneTypeID": { pr.HomePhone.PhoneTypeID = (string)reader.GetValue(i); break; }
                case "ObjectID": { pr.HomePhone.ObjectID = (int)reader.GetValue(i); break; }
                case "ObjectTypeID": { pr.HomePhone.ObjectTypeID = (string)reader.GetValue(i); break; }
EN

Stack Overflow用户

发布于 2012-01-08 11:41:26

一般来说,可变结构是一个非常糟糕的想法。

您应该考虑使用许多可用ORM中的一个,这些ORM是专门为此目的而存在的。

如果你一心想要定制一些东西,那么一般的想法是非常简单的。

使用dynamic compilation或expressions

  • Magic reflection

  • Bind

对数据读取器字段名使用reflection

  • Bind类型字段/属性检查给定类型
票数 1
EN
查看全部 6 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/8775142

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档