Asp.net mvc 如何制作模型以替换CustomMembershipDB

Asp.net mvc 如何制作模型以替换CustomMembershipDB,asp.net-mvc,Asp.net Mvc,我刚刚按照MVC教程创建了一个图像库,它将控制器连接到数据连接,如下所示: ImageController.cs: ... private CustomMembershipDB db = new CustomMembershipDB(); public ViewResult Index() { return View(db.lm_pics.ToList()); } ... 我不想直接连接到CustomMembershipDB,而是想使用我自己的名为Ga

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

ImageController.cs:

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

    public ViewResult Index()
    {
        return View(db.lm_pics.ToList());
    }
...
我不想直接连接到CustomMembershipDB,而是想使用我自己的名为GalleryModel.cs的模型。我认为这将允许我创建更多的直接数据访问的功能

我不知道如何编写这个模型,或者如何在控制器中引用它,使其行为与直接数据库连接现在的行为相同

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

namespace LMProj_MVC.Models
{
公共类厨房模型
{
公共字符串Picname{get;set;}
公共字符串说明{get;set;}
public int Userid{get;set;}
}
公共类PicDBContext:CustomMembershipDB
{
公共数据库集GalleryModel{get;set;}
}
}

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

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

var picSummaries = db.lm_pics.Select(pic => new GalleryModel{
    Picname = pic.Name,
    Description = pic.Description,
    Userid = pic.User.Id
});
或者您可以为每个循环使用一个:

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
        });
    }

这看起来很有希望,但在第一个例子中,“pic=>new GalleryModel”用红色下划线表示“无法将lamda表达式转换为'string'类型,因为它不是委托类型”。你知道这可能是什么原因吗?你有“using System.Linq;”吗?是的,我看到其他海报有这个问题,但是它位于我所有文件的顶部。lambda错误消失了,我删除了类中不必要的GalleryModel方法。但是现在结果似乎不是iEnumerable,所以我试图弄清楚如何使数据iEnumerable。我使用了列表,而不是从第一个示例返回视图(picSummaries.toList())。让它工作起来。谢谢
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);