نمذجة علاقة متعددة إلى العديد في ASP.NET MVC باستخدام LINQ إلى SQL

StackOverflow https://stackoverflow.com/questions/2145034

  •  23-09-2019
  •  | 
  •  

سؤال

لقد قرأت ومشاهدة مقاطع الفيديو حول MVC وبدأت في الشعور بالارتباك قليلاً. البرامج التعليمية البسيطة بسيطة للغاية ويبدو أنها تتضمن فقط جدول قاعدة بيانات واحد. ديو ديو!

تفترض البرامج التعليمية المتقدمة أن الكثير من المعرفة موجودة ولدي مشكلة في متابعة هؤلاء. ناهيك عن أن هناك 15 طريقة لتصميم قاعدة البيانات الخاصة بك ولا يريد أحد أن يشرح سبب قيامهم بذلك بهذه الطريقة أو بهذه الطريقة.

لذلك ، أنا أبحث عن برنامج تعليمي بسيط أو شرح للعملية التي ستذهب إليها لتصميم تطبيق CRUD بسيط يتضمن علاقة كثيرة إلى حد كبير ، أوضح أدناه. ربما لم أقدم معلومات كافية ، لذا لا تتردد في طلب التحديثات.

التحديثات:سأكون مهتمًا برؤية حل LINQ إلى SQL.

مررت بـ Nerddinner PDF ويجب أن يكون نموذجي مختلفًا قليلاً عن. أريد علاقة كثيرة مع وجبتي ومكوناتاتي. إنه يستخدم فقط 1 إلى عشاء و RSVPs. أيضًا ، لا يوضح أبدًا كيف يعلق RSVPs على نموذج العشاء الخاص به. هذه هي المشكلة في الأساس التي أواجهها. لماذا لا يحتوي نموذج الوجبات على قائمة المكونات؟ لدي المفاتيح الأجنبية المناسبة في المكان. لست متأكدًا من أين أو كيف يمكنني إعداده حتى أتمكن من الوصول إلى المكونات من خلال نموذج الوجبة إذا أردت طباعتها على عرض التفاصيل أو شيء ما.

وجبات

  • هوية شخصية
  • عنوان
  • وصف

مكونات

  • هوية شخصية
  • اسم

وجبات الطعام

  • id_meal
  • id_ingredient
هل كانت مفيدة؟

المحلول

آمل أن تكون قد عثرت على شيء ما، ولكن للآخرين هناك قد لا يزال هناك تفتيش، نلقي نظرة على هذا واحد:

rel="nofollow"> https://github.com/workshirt/wscoachmarksview

نصائح أخرى

لدي العديد من الأمثلة على هذا النوع من العلاقة في مشروعي الحالي. أنا أستخدم MVC 1 و LINQ-TO-SQL. مررت بنفس الإحباط بالضبط كما تواجهك الآن. تتمثل أكبر عقبة في قبول حقيقة أن LINQ-to-SQL لا تدير مباشرة العديد من العلاقات إلى العديد من العدد ، ولكن فهم أنه لا يحتاج إلى الحصول على المعلومات التي تحتاجها.

لنبدأ بـ R في Crud ، لأنها أسهل طريقة لإظهار ما يجب القيام به. الآن ، في هذه المرحلة ، أوصي بإنشاء نموذج عرض قوي من النوع ، فقط لتخفيف مهمة تجميع بيانات العرض الخاصة بك وتبسيط تعيين بيانات الوجبة إلى عرض التفاصيل:

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

لاسترداد وجبة وقائمة المكونات ، إليك طريقة وحدة التحكم:

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 مباشرة العلاقات بين العديد من العدد ، وهذا هو السبب في أنك لا تستطيع رؤية كيان المكونات مباشرة من الوجبة. ومع ذلك ، كما هو موضح في طريقة عمل وحدة التحكم ، يمكنك الوصول إلى كيان الارتباط (وجبات الوجبات) من كيان الوجبة. من كيان الجمعية ، يمكنك الوصول إلى كيان المكونات للحصول على قائمة المكونات. سيبدو المنظر مثل هذا:

<%@ 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>

إذا تم إعداد مخطط قاعدة البيانات الخاص بك بشكل صحيح مع العلاقات الرئيسية الخارجية التي تحتاجها ، فيجب أن يمنحك هذا النهج النتيجة التي تبحث عنها.

أوصي بشدة بـ Steve Sanderson 'Pro ASP.NET MVC Framework ". إنه إلى حد بعيد أفضل دليل ASP.NET MVC الذي رأيته ، وفي رأيي أفضل بكثير من كتاب WROX لفريق Msoft. يستحق المال إذا كنت تريد الدخول فيه.

رابط الأمازون

لن تحصل على كل شيء على لوحة الفضة. سوف تضطر إلى المرور hell of wtf نفسك.

يبدو الأمر كما هو الحال معي وروبي على القضبان - في كل مرة أرى فيها قصاصة عينة أو تطبيق عينة - يبدو Super Duper بسيطًا وأنيقًا. لكن - لأنني لم أنشأت أي شيء بنفسي أبدًا ، لم أحصل على أفكار مع ما لبدء.

لذلك - فقط اذهب بعض الكتب و عينة التطبيقات. ثم - إنشاء شيء ما. هذا الشعور (مع ما يجب أن يبدأ ، وكيفية التركيب وما إلى ذلك) سوف يختفي قريبًا.

في وقت لاحق - لا تنسى الطرف الثاني - تشعر أنك تعرف كل ما يجب أن تعرفه. قون


ونعم - لم تقدم معلومات كافية. هناك العديد من المسارات للذهاب. أعتقد - لن ترغب في سماع أساليب التصميم المتقدمة للمجال. لا تريد أن ترى SQL بجوار علامة HTML. أنت فقط تعرف 'السياقويمكن أن تقرر ما هو ضروري وجيد وما هو غير ضروري.

يمكنك استخدام طرق العرض لمعرفة العناصر الموجودة في قائمة أو مكتبة الأكثر أهمية بالنسبة لك أو تناسب هدف معين. على سبيل المثال، يمكنك إنشاء طرق إطلالة على الملفات الموجودة في مكتبة تنطبق على قسم معين أو العناصر الموجودة في قائمة تم إنشاؤها بواسطة شخص معين. تتوفر وجهات النظر لقائمة أو مكتبة تنشئها فيها.

تحتوي كل قائمة أو مكتبة على عرض واحد على الأقل. في المتصفح، يمكنك تعديل طرق العرض هذه وإنشاء طرق عرض جديدة. على سبيل المثال، تتضمن قائمة المهام عدة طرق عرض، مثل جميع المهام ومهامي. يمكنك تعديل هذه المشاهدات عن طريق تغيير كيفية فرز العناصر الموجودة في القائمة. أو يمكنك إنشاء طريقة عرض جديدة تعرض هذه المهام غير المكتملة فقط.

لمتطلباتكم، يمكنك الانتقال -> تعديل العرض -> تحت النمط -> يمكنك تحديد الأنماط التي تريدها.

ألق نظرة على الرابط أدناه لمزيد من التفاصيل حول الأساليب في القائمة / عرض المكتبة

إنشاء أو تغيير أو حذف عرض قائمة أو مكتبة

في الارتباط أعلاه، قم بالتمرير لأسفل وإيجاد القسم المسمى "Style" ضمن "إعدادات المشاهدات" وقد يساعدك على القيام بمتطلباتك.

أجد أن Steven Walther لديه بعض البرامج التعليمية الرائعة لـ ASP.NET MVC الإصدار 1 ، على افتراض أنك تعمل مع الإصدار الأول حيث لم يتم إصدار الإصدار 2 بعد (RC حاليًا). أول برنامج تعليمي يعمل يبدأ هنا ويجب أن تكون قادرًا على العثور على الباقي من هناك. لديه أيضًا الكثير من النصائح الجيدة إذا بحثت من خلال مدونته على هذا الموقع.

كما تغطي معظم هذه البرامج التعليمية VB و C#، إذا كان هذا مهمًا بالنسبة لك.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top