mvc 3 ef code first 4.1 - вставка данных нормализованной структуры таблицы, когда форма содержит все поля для всех таблиц - PullRequest
0 голосов
/ 14 октября 2011

Вопрос: Когда пользователь нажимает кнопку «Отправить», какова лучшая стратегия для вставки данных в правильные таблицы? Должен ли я создать 3 модели представления в httppost и использовать атрибуты Myform для заполнения моих 3 моделей представления 1.mvr, 2.MvrMedication3.AdminRoute Затем сохраните запись для каждого?

Предположим, что кто-то переходит к форме, в которой есть данные всех трех моделей представлений ниже

 1. MVR class, 
 2. MvrMedication
 3. AdminRoute

Итак, моя модель представления выглядит как

public class MyForm
{
   public virtual Mvr Mvr{get;set;}
   public virtual MvrMedication MvrMedication{get;set;}
   public virtual AdminRoute AdminRoute{get;set;}
}

Тогда в редакторе представления для всех моих атрибутов.Когда пользователь нажимает «отправить», какова лучшая стратегия для вставки данных в правильные таблицы?

Ниже приведен код только для справки

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.ComponentModel.DataAnnotations;
//Please use: http://blogs.msdn.com/b/efdesign/archive/2010/06/01/conventions-for-code-first.aspx

namespace MVR.Models.Tables
{
    public class Mvr
    {
        [Key]
        public virtual int MvrId { get; set; }
        public virtual ICollection<MvrMedication> MvrMedicationId { get; set; }

        public virtual DateTime DateOfReport { get; set; }
        public virtual DateTime DateOfVariance { get; set; }
        public virtual String   IndividualFirstHospitalNumber { get; set; }
        public virtual String   MallUnit { get; set; }
        public virtual Boolean  PhysicianNotified { get; set; }
        public virtual DateTime PhysicianDateNotified { get; set; }
        public virtual Boolean   PharmacistNotified { get; set; }
        public virtual DateTime PharmacistDateNotified { get; set; }
        public virtual DateTime PharmacistDateOfNotification { get; set; }
        public virtual Boolean  InitialSignature { get; set; }
        public virtual String   VarianceDescription { get; set; }

    }
}







using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.ComponentModel.DataAnnotations;

namespace MVR.Models.Tables
{
    public class AdminRoute
    {
        [Key]
        public virtual int AdminRouteId { get; set; }
        public virtual MvrMedication MvrMedicationId { get; set; }
        public virtual string RouteName { get; set; }
    }

    }






    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Web;
    using System.ComponentModel.DataAnnotations;
    namespace MVR.Models.Tables
    {
        public class MvrMedication
        {
            [Key]
            public virtual int MvrMedicationId{ get; set; }
            public virtual ICollection<AdminRoute> AdminRouteId { get; set; }

            public virtual string MvrMedicationName { get; set; }

        }
    }

1 Ответ

1 голос
/ 14 октября 2011

Ваша модель представления выглядит нормально, но я бы порекомендовал создать модели представления для классов Mvr, MvrMedicine и AdminRoute, чтобы они были более удобными для пользователя.Обычно вы не должны видеть идентификаторы в представлении.

На стороне представления просто используйте @ Html.EditorFor для входных данных в форме и отправьте их в метод [HttpPost] в контроллере.

@model MvcProject.Models.MyForm

@using (Html.BeginForm()) {
    <fieldset>
        <legend>Mvr</legend>
        @Html.EditorFor(m => m.Mvr)
    </fieldset>

    <fieldset>
        <legend>MvrMedication</legend>
        @Html.EditorFor(m => m.MvrMedication)
    </fieldset>

    <fieldset>
        <legend>AdminRoute</legend>
        @Html.EditorFor(m => m.AdminRoute)
    </fieldset>

    <p>
        <input type="submit" value="Save" />
    </p>
}

Значение по умолчанию @Html.EditorFor() будет генерировать входные данные по умолчанию для каждого свойства в модели.Вы можете создавать свои собственные пользовательские шаблоны редактора для каждой модели представления или просто определять каждый ввод в форме, но шаблоны редактора более понятны и могут использоваться повторно.

Это хорошее руководство для шаблонов редактора .Это для MVC2, но концепции те же.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...