gpt4 book ai didi

asp.net-mvc - 使用 LINQ to SQL 在 ASP.NET MVC 中建模多对多关系

转载 作者:行者123 更新时间:2023-12-04 16:37:28 25 4
gpt4 key购买 nike

我一直在阅读和观看有关 MVC 的视频,但我开始有点困惑。简单的教程太简单了,它们似乎只涉及单个数据库表。呜呜呜!

高级教程假设存在大量知识,但我无法遵循这些知识。更不用说,有 15 种方法可以为您的数据库建模,没有人愿意解释为什么他们这样做或那样做。

因此,我正在寻找一个简单的教程或解释,说明您设计一个涉及多对多关系的简单 CRUD 应用程序将经历的过程,如下所述。我可能没有提供足够的信息,所以请随时请求更新。

更新:
我有兴趣看到 Linq To Sql 解决方案。

我浏览了nerddinner PDF,我的模型必须与他的略有不同。我希望与我的膳食和我的配料建立多对多的关系。他只是在 Dinner 和 RSVP 中使用一对多。此外,他从未展示过他是如何将 RSVP 附加到他的晚餐模型上的。这基本上是我遇到的问题。为什么我的膳食模型不包含成分列表?我有适当的外键。我不确定在哪里或如何设置它,以便我可以通过 Meal 模型访问成分,如果我想在详细信息 View 或其他东西上打印它们。

膳食

  • 身份证
  • 标题
  • 说明

  • 原料
  • 身份证
  • 姓名

  • 膳食-配料
  • Id_Meal
  • Id_Ingredient
  • 最佳答案

    在我当前的项目中,我有很多这种关系的例子。我正在使用 MVC 1 和 LINQ-to-SQL。我当时经历了与你现在所经历的完全相同的挫折。最大的障碍是接受 LINQ-to-SQL 不直接管理多对多关系的事实,但要了解它不需要为了获取所需的信息。

    让我们从 CRUD 中的 R 开始,因为它是演示需要做什么的最简单方法。现在,在这一点上,我建议创建一个强类型 View 模型,只是为了简化聚合 View 数据的任务并简化将膳食数据分配给详细信息 View 的任务:

    public class MealDetailsViewModel
    {
    public int Id_Meal { get; set; }
    public string Title { get; set; }
    public string Description { get; set; }

    private List<Ingredient> _Ingredients = new List<Ingredient>();
    public List<Ingredient> Ingredients
    {
    get { return _Ingredients; }
    set { _Ingredients = value; }
    }
    }

    要检索膳食及其成分列表,请使用 Controller 方法:
    public ActionResult Details (int mealID)
    {
    Meal result = DataContext.Meals
    .Where(a => a.Id_Meal == mealID)
    .SingleOrDefault();

    MealDetailsViewModel viewModel = new MealDetailsViewModel
    {
    Id_Meal = result.Id,
    Title = result.Title,
    Description = result.Description,
    Ingredients = result.Meals-Ingredients
    .Where(a => a.Id_Meal == mealID)
    .Select(a => a.Ingredient)
    .ToList()
    };

    return View(viewModel);
    }

    如前所述,LINQ-to-SQL 不直接支持多对多关系,这就是您无法直接从 Meal 中看到成分实体的原因。但是,如 Controller 操作方法中所示,您可以从 Meal 实体访问关联实体(Meals-Ingredients)。从关联实体,您可以访问成分实体以获取成分列表。 View 看起来像这样:
    <%@ Page Language="C#" MasterPageFile="~/Views/Shared/Site.Master" Inherits="ViewPage<MealDetailsViewModel>" %>

    <asp:Content ID="mainMealDetails" ContentPlaceHolderID="MainContent" runat="server">
    <h2><%= Model.Title %></h2>
    <h3><%= Model.Description %></h3>
    <br />
    <p>Ingredients:</p>
    <ul>
    <% foreach(Ingredient item in Model.Ingredients)
    { %>
    <li><%= item.Name %></li>
    <% } %>
    </ul>
    <br />
    <%= Html.ActionLink("Update", "Edit", new { id = Model.Meal_ID }) %> |
    <%= Html.ActionLink("Add Ingredient", "IngredientCreate", new{ id = Model.Meal_ID }) %> |
    <%= Html.ActionLink("Delete", "Delete", new { id = Model.Meal_ID }) %> |
    <%= Html.ActionLink("Back to Menu List", "Index") %>
    </asp.Content>

    如果您的数据库模式使用您需要的外键关系正确设置,则此方法应该会为您提供所需的结果。

    关于asp.net-mvc - 使用 LINQ to SQL 在 ASP.NET MVC 中建模多对多关系,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2145034/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com