我注意到很多ASP.NET的例子都使用Linq2Sql作为数据源。
是否有任何示例显示如何使用非Linq2Sql数据源(即数据集)进行模型绑定,或者(如我的情况)基于自定义业务对象的项目的通用列表/集合?即。
public class WebsiteList : List<Website>
{
public WebsiteList()
{
}
}
ASP.NET MVC非常棒,特别是对于“使用任何你想要的”方法。很多例子都使用Linq2Sql,这简直太可惜了。
答案 0 :(得分:2)
您可以使用自己的自定义存储库替换Linq2Sql部件来使用许多示例。由于它是IQueryable,你可以用“WebsiteList.AsQueryable()”替换它,并按原样使用大多数示例。例如,这是我使用的虚拟存储库:
public class FakeRepository<T> : IResourceRepository<T> where T : class
{
private readonly List<T> items = new List<T>();
private readonly IObjectFactory resolver;
public FakeRepository(IObjectFactory resolver)
{
this.resolver = resolver;
}
public IQueryable<T> GetAll()
{
return this.items.AsQueryable();
}
public void Save(T item)
{
if (!this.items.Contains(item))
{
this.items.Add(item);
}
}
public void Delete(T item)
{
this.items.Remove(item);
}
public T Create()
{
return this.resolver.GetInstance<T>();
}
}
我可以轻松地将它与真实的存储库(可能是Linq2Sql,ADO.NET实体,SubSonic,......)进行交换。
答案 1 :(得分:0)
Linq to SQL获取数据库表并将它们映射到业务类。要在没有Linq to SQL的情况下执行相同的操作,只需手动建模数据类,并包含要读取和保存到数据库的代码。
namespace MyProject.Model
{
public class Website
{
public int WebsiteID { get; set }
public string Name { get; set }
public string Url { get; set }
public string Author { get; set }
}
public class WebsiteRepository
{
public Website Read(int id) { // read from database }
public void Write(Website website) { // write to database }
public website[] GetWebsites { }
}
}
namespace MyProject.Controllers
{
public class WebsiteController
{
WebsiteRepository repository = new WebsiteRepository();
ActionResult Index()
{
Website[] websites = repository.GetWebsites();
return View(websites);
}
}
}