关于SO的第一个问题!
我正在处理的是一个Webforms页面,它有很多ASP文本框,日期选择器和下拉列表。现在我使用ADO.net进行所有这些控制来进行CRUD操作。
我已经在这个项目中做了大量工作,但我无法想知道我是否能够以更简单或更有效的方式做到这一点。到目前为止,我一直在使用SqlDataReader类。
如果有人可以分解我可用的不同选项或指出一些好的信息,我会很感激。我知道这是一个非常广泛的话题。我很了解LINQtoSQL和EntityFramework。
所以我的问题是:ADO.net与LINQtoSQL或EntityFramework相比如何?
答案 0 :(得分:1)
您应该阅读ADO.NET,Linq 2 SQL和Entity Framework的每个示例,并实现它们以了解每个示例的优缺点。一个简单的网络搜索应该给你样品。
Linq2Sql和EF将需要您编写非常SQL查询。一旦你初步掌握了这三件事,请在你的代码中遵循这个简单的模式:
e.g。
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)
使用上述方法,您的所有代码都将在界面上运行,如果您决定更改实现,则只需更改一个位置。