【问题标题】:How to use a SQL query in ASP.NET MVC and which to use?如何在 ASP.NET MVC 中使用 SQL 查询以及使用哪个?
【发布时间】:2019-06-03 14:56:14
【问题描述】:

我正在创建一个关于电影、连续剧和演员的 ASP.NET MVC 程序。我对这个问题的目标是在我的视图中添加一个参数来回答“哪些演员参与了这部电影/系列?”的问题。和“这位演员参演了哪些电影/连续剧?” (基本上,当我点击演员的详细信息时,我希望它出现在他参与的电影中,对于电影,我想显示哪些演员参与了它。

为此,我在演员和电影以及演员和剧集之间创建了一个表,称为 Movies Participated 和 Series Participated

这些是我的桌子:

--Movies Table
MoviesData (
MoviesID int PK,
MoviesName varchar(50),
MoviesDescription text,
MoviesCategory varchar(50),
MoviesYear varchar(4));

--Series Table
SeriesData (
SeriesID int PK,
SeriesName varchar(50),
SeriesDescription text,
SeriesCategory varchar(50),
SeriesYear varchar(4));

--Actors Table
ActorsData (
ActorID int PK,
ActorName varchar(50),
ActorAge varchar(3))

--SeasonsnEpisodes
SeasonsEpisodes (
SeasonsEpisodesId in PK,
SeriesID int FK,
SerieSeasons int,
SerieEpisodes int)

--MoviesParticipated
MoviesParticipated (
MoviesParticipationId int PK
ActorID int FK
MovieID varchar(50) FK )

--SeriesParticipated
SeriesParticipated (
SeriesParticipationId int PK
ActorID int FK
SeriesID varchar(50) FK)

但现在我被困住了。我不知道我应该做一个查询还是别的什么。

编辑:

控制器详细信息:

    public ActionResult Details()
        {
    PAPEntities db = new PAPEntities();
            SeriesViewModel[] SeriesVM = db.SeriesData.Select(serie => new SeriesViewModel
            {
                SerieID = serie.SerieID,
                SerieName = serie.SerieName,
                SerieCategory = serie.SerieCategory,
                SerieDescription = serie.SerieDescription,
                SerieYear = serie.SerieYear

            }).ToArray();


            return View(SeriesVM);
        }

视图模型:

  public class SeriesViewModel
    {
        public int SerieID { get; set; }
        public string SerieName { get; set; }
        public string SerieCategory { get; set; }
        public string SerieDescription { get; set; }
        public string SerieYear { get; set; }
    }

Edit2(忘记添加视图):

<table class="table table-bordered table-responsive table-hover">
       <tr>
        <td><h5><b>Id da Série </b></h5></td>
        <td><h5><b>Nome </b></h5></td>
        <td><h5><b>Categoria</b></h5></td>
        <td><h5><b>Descrição</b></h5></td>
        <td><h5><b>Ano de Lançamento</b></h5></td>
        <td><h5><b>Episódios</b></h5></td>
        </tr>
        @foreach (var item in Model)
        {
        <tr>
            <td>@item.SerieID</td>
            <td>@item.SerieName</td>
            <td>@item.SerieCategory
            <td>@item.SerieDescription</td>
            <td>@item.SerieYear</td>
            <td>@Html.ActionLink("Temporadas e Episódios", "DetailsSeasonsNEpisodes")</td>
        </tr>
        }
    </table>

【问题讨论】:

  • 你认为“别的东西”会是什么?如果要从数据库中检索数据,请使用查询。您是在问应该如何进行查询?
  • 你好@itsme86。 “别的东西”是一种表达方式,对不起。首先,我想知道查询。我已经尝试了很多,但我并没有真正找到一个好的解决方案,然后,我将如何在 MVC 中实现它
  • 不确定这是否符合基于意见的,但至少不清楚你在问什么。我们如何在没有任何后续问题的情况下回答这个问题? “是的,做一个查询”
  • 你好@Mackan。我昨天一整天都在研究一个查询,因为我不是最有经验的程序员,正如你已经注意到的那样。这是我的查询:SELECT m.*, a.* FROM Movie m INNER JOIN MovieParticipation mp ON mp.MovieID = m.MovieID INNER JOIN Actor a ON a.ActorID = mp.ActorID WHERE m.MovieID = 1。你能检查所以看看它是否正确?该查询的目标是列出电影中的所有演员。如果是,您能否向我解释如何在 MVC 中实现它以显示在详细信息视图中?我将编辑问题,以便向您解释我的视图和视图模型中的内容
  • 是的,您需要查询。比普通 SQL 更好地使用 LINQ。也许以下教程可以帮助您:Accessing Your Model's Data from a Controller

标签: c# sql asp.net-mvc razor


【解决方案1】:

有多种方法可以实现您想要做的事情,但坚持您目前拥有的内容,您可以在控制器代码中添加“查询”部分。像这样的东西;

public ActionResult Details(int actorId)
{
    PAPEntities db = new PAPEntities();

    SeriesViewModel[] SeriesVM = db.SeriesParticipated.Where(o => o.ActorId == actorId).Include(o => o.SeriesData).Select(o => new SeriesViewModel
    {
        SerieID = o.SeriesData.SerieID,
        SerieName = o.SeriesData.SerieName,
        SerieCategory = o.SeriesData.SerieCategory,
        SerieDescription = o.SeriesData.SerieDescription,
        SerieYear = o.SeriesData.SerieYear
    }).ToArray();

    return View(SeriesVM);

}

如果没有您的 EF 模型,我不能说这是否会首次构建,但它应该让您朝着正确的方向前进。

请注意,它现在从 SeriesParticipated 数据开始,按 ActorId 过滤(Where),加入(包括)Series 数据,然后使用引用来自 SeriesParticipated 选择视图模型。

【讨论】:

    猜你喜欢
    • 2021-09-01
    • 2021-11-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-08-11
    相关资源
    最近更新 更多