Наша команда в настоящее время разрабатывает веб-приложение, в котором у нас есть библиотека классов с добавленной Entity Framework .edmx и сгенерированы классы POCO.
Наше веб-приложение основано на MVC, мы определили нашеклассы в моделях с одинаковыми именами и атрибутами (скопируйте вставку классов POCO из .edmx).Библиотека классов .edmx связана с веб-приложением MVC.
Представления строго типизированы из Классы моделей MVC .Мы использовали модели MVC для отображения, StringLength и Required.
В нашем контроллере, когда есть операция CRUD, мы принимаем тип классов POCO, такой как
public ActionResult Create(EFModels.User user) { }
EFModels.User являетсякласс из .edmx (сгенерированный класс POCO) и MVC View строго типизированы для модели MvcWebApplication.Models.User.
Вопрос в том, как мы получаем данные из MvcWebApplication.Models.User (изМодель) в EFModels.User (класс EF) в ActionResult Create ??
Я могу получить данные, я знаю, что это coz с тем же именем свойства.Я попытался изменить имя класса, но все равно оно работает, но если мы изменим имя свойства, оно не будет работать.Я не могу понять логику этого.
Изначально мы никогда не знали, что это не работает, и мы использовали AutoMapper для преобразования класса модели в класс POCO Edmx.
Любые идеи, спасибо.
Вопрос в том, как мы получаем значения класса модели в класс EF при любом отображении.Мне не нужно использовать AutoMapper, без этого я получаю значения.
Посмотрите на код, надеюсь, что это объясняет лучше ...
// POCO CLASS
namespace EFModels
{
using System;
using System.Collections.Generic;
public partial class User
{
public int Id { get; set; }
public string Type { get; set; }
public string Name { get; set; }
}
}
// Класс модели MVC
namespace MvcWebSamp.Models
{
public class User
{
public int Id { get; set; }
[Display(ResourceType = typeof(BasicTags), Name = "Type")]
[StringLength(15, ErrorMessageResourceName = "TypeLength", ErrorMessageResourceType = typeof(BasicTags))]
[Required(ErrorMessageResourceName = "TypeRequired", ErrorMessageResourceType = typeof(BasicTags))]
public string TypeName { get; set; }
public string Name { get; set; }
public Address Address { get; set; }
}
}
// Страница просмотра MVC
<%@ Page Title="" Language="C#" MasterPageFile="~/Views/Shared/Site.Master" Inherits="System.Web.Mvc.ViewPage<MvcWebSamp.Models.User>" %>
<asp:Content ID="Content1" ContentPlaceHolderID="TitleContent" runat="server">
User
</asp:Content>
<asp:Content ID="Content2" ContentPlaceHolderID="MainContent" runat="server">
<h2>User</h2>
<% using (Html.BeginForm("Create", "User", FormMethod.Post))
{
%>
<%: Html.ValidationSummary(true) %>
<fieldset>
<legend>User</legend>
<div class="editor-field">
<%: Html.LabelFor(model => model.TypeName) %>
<%: Html.EditorFor(model => model.TypeName)%>
<%: Html.ValidationMessageFor(model => model.TypeName)%>
</div>
<div class="editor-field">
<%: Html.LabelFor(model => model.Name) %>
<%: Html.EditorFor(model => model.Name)%>
<%: Html.EditorFor(model => model.Address.street)%>
</div>
<p>
<input type="submit" value="Create" />
</p>
</fieldset>
<% } %>
</asp:Content>
// Метод контроллера
public ActionResult Create(EFModels.User user)
{
Model1Container con = new Model1Container();
con.Users.Add(user);
con.SaveChanges();
return View("User");
}
Когда янажимая кнопку «Создать», я публикую данные типа MvcWebSamp.Models.User, и в действии «Создать» я могу получить данные пользователя типа EFModels.User без использования AutoMapper.Я хочу знать, как это работает ???