使用 asp.net 控件操作数据的一些数据访问选项是啥?

Posted

技术标签:

【中文标题】使用 asp.net 控件操作数据的一些数据访问选项是啥?【英文标题】:What are the some data access options for manipulating data using asp.net controls?使用 asp.net 控件操作数据的一些数据访问选项是什么? 【发布时间】:2014-07-30 04:38:41 【问题描述】:

我的第一个问题!

我正在处理的是一个 Webforms 页面,它有很多 ASP 文本框、日期选择器和下拉菜单。现在我正在使用 ADO.net 对所有这些控件进行 CRUD 操作。

我已经非常喜欢这个项目,但我不禁想知道我是否可以以更简单或更有效的方式来做这件事。到目前为止,我对所有内容都使用 SqlDataReader 类。

如果有人可以分解我可用的不同选项或向我指出一些有用的信息,我将不胜感激。我知道这是一个相当广泛的话题。我有点了解 LINQtoSQL 和 EntityFramework。

所以我的问题真的是:ADO.net 与 LINQtoSQL 或 EntityFramework 相比如何?

【问题讨论】:

【参考方案1】:

您应该阅读 ADO.NET、Linq 2 SQL 和实体框架中的每个示例并实施它们以了解每个示例的优缺点。一个简单的网络搜索应该会给你样本。

Linq2Sql 和 EF 将需要您编写非常多的 SQL 查询。一旦你初步掌握了这三件事,在你的代码中遵循这个简单的模式:

    为您的数据访问定义一个接口。 让您的代码(ascx.cs 和 aspx.cs)与界面一起工作。 定义基于 ADO.NET、Linq2Sql 或 EF 的接口的具体实现。

例如

public interface IRepository

 MyDto GetData(int id);
 // and so on


public class EntityFrameworkRepository : IRepository

 public MyDto GetData(int id)
 
  using (var db = new MyDbContext())
  
   var myDtoEntity = db.MyDtoEntity.FirstOrDefault(m => m.Id == id);

   // extension method to transform DB objects into DTOs
   return myDtoEntity.ToMyDto(); 
  
 


// similarly you can do:

public class Linq2SqlRepository : IRepository

 // so on..


// now for all your aspx.cs pages: derive them from a base page, 
// and in the base page
// have a variable like this, so that all pages have access to this.

public IRepository Repository get; set;

// you can have static instances as well for one time initialization.

// you can initialize the Repository with a particular concrete implementation
// or inject it. (if you're well versed with Dependency Injection)

使用上述方式,您的所有代码都将在接口上运行,如果您决定更改实现,您只需更改一个地方。

【讨论】:

非常感谢!这正是我正在寻找的。我很高兴能探索这些选项,听起来更干净、更容易。

以上是关于使用 asp.net 控件操作数据的一些数据访问选项是啥?的主要内容,如果未能解决你的问题,请参考以下文章

asp.net网站怎么连接Mysql数据库。我的asp.net网站可以访问了,Mysql数据库也有帐号和密码。

简述asp.net中控件的种类及特点

循环访问 asp.net 网页上的所有控件

将数据从 ASP.NET 页面传递到动态加载的 ASCX 用户控件

时间选择器控件 ASP.NET

asp.net 如何访问gridview控件中每一行的label控件