首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在遗留应用程序中从非类型化DataSets迁移到POCO\LINQ2SQL

如何在遗留应用程序中从非类型化DataSets迁移到POCO\LINQ2SQL
EN

Stack Overflow用户
提问于 2011-01-11 11:13:16
回答 1查看 711关注 0票数 2

日安!

我有一个遗留应用程序,其中数据访问层由使用SqlConnection/SqlCommand完成查询的类组成,结果被传递到封装在非类型化数据集/数据表中的上层。

现在,我正在将这个应用程序集成到用ASP.NET MVC 2编写的较新的应用程序中,其中使用LINQ2SQL进行数据访问。我不想重写生成在SqlConnection/SqlCommand中传递给LINQ2SQL的复杂查询的复杂逻辑(并且没有权限这样做),但我希望这些查询的结果是强类型对象集合,而不是非类型化数据集/数据表。

其基本思想是将旧的数据访问代码包装在一个漂亮的ASP.NET MVC“模型”中。

做这件事的快速\容易的方法是什么?

另外,下面的答案是基于 的一个很好的解决方案

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2011-01-11 11:49:26

您可以采用的一种方法是使用DataReader和传输。因此,对于您想要使用的每个对象,在数据传输对象文件夹中定义类(或者不管您的项目是如何构造的),那么在您的数据访问层中有一些类似下面的内容。

我们在具有高度规范化数据库的项目中使用了非常类似的方法,但是在代码中,我们不需要这种规范化,所以我们使用过程将数据放入更可用的对象中。如果还需要保存这些对象,则需要处理将对象转换为数据库命令。

,快速\简单的方法是什么?

根据类的数量等,这不可能是最快的方法,但它将允许您使用与Linq对象非常类似的对象,并且根据所使用的集合的类型(IList、IEnumerable等),您将能够对这些类型的集合使用扩展方法。

代码语言:javascript
复制
public IList<NewClass> LoadNewClasses(string abc)
{
    List<NewClass> newClasses = new List<NewClass>();

    using (DbCommand command = /* Get the command */)
    {
        // Add parameters
        command.Parameters["@Abc"].Value = abc;

        // Could also put the DataReader in a  using block
        IDataReader reader = /* Get Data Reader*/;

        while (reader.Read())
        {
            NewClass newClass = new NewClass();
            newClass.Id = (byte)reader["Id"];
            newClass.Name = (string)reader["Name"];

            newClasses.Add(newClass);
        }

        reader.Close();
    }

    return newClasses;
}
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/4656990

复制
相关文章

相似问题

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