如何使Model取代CustomMembershipDB

时间:2012-02-24 14:44:08

标签: asp.net-mvc

我刚刚按照MVC教程创建了一个图像库,它将Controller连接到数据连接,如下所示:

ImageController.cs:

...
private CustomMembershipDB db = new CustomMembershipDB();

    public ViewResult Index()
    {
        return View(db.lm_pics.ToList());
    }
...

我不想直接连接到CustomMembershipDB,而是想使用我自己的名为GalleryModel.cs的Model。我认为这将允许我创建更多只能直接访问数据的功能。

我不确定如何编写此模型,或者如何在控制器中引用它,以使其行为与直接数据库连接现在的行为相同。

目前,我的GalleryModel.cs文件看起来像这样(编辑纠正错误):

namespace LMProj_MVC.Models
{
    public class GalleryModel
    {
        public string Picname { get; set; }
        public string Decription{ get; set; }
        public int Userid { get; set; }
    }

    public class PicDBContext : CustomMembershipDB
    {
        public DbSet<GalleryModel> GalleryModel { get; set; }
    }
}

除了创建其他方法之外,我希望能够像现在一样使用iEnumberable列表来显示图库。有人能告诉我我错过了什么吗?

1 个答案:

答案 0 :(得分:1)

您需要为每个数据库图片创建模型对象的实例。您可以使用LINQ来执行此操作,例如:

var picSummaries = db.lm_pics.Select(pic => new GalleryModel{
    Picname = pic.Name,
    Description = pic.Description,
    Userid = pic.User.Id
});

或者你可以为每个循环使用a:

var picSummaries = new List<GalleryModel>();

 foreach (var pic in db.lm_pics)
    {
        picSummaries.Add(new GalleryModel{
            Picname = pic.Name,
            Description = pic.Description,
            Userid = pic.User.Id
        });
    }

然后像以前一样返回视图:

return View(picSummaries);