我們的團隊目前正在開發一個Web應用程序,因爲我們有一個添加了實體框架.edmx的類庫,並生成了POCO類。實體框架和MVC模型
我們的Web應用程序基於MVC,我們已經在具有相同名稱和屬性的模型中定義了我們的類(從.edmx複製POCO類的粘貼)。 .edmx類庫引用了MVC Web應用程序。
該視圖是強類型的MVC模型類。我們使用MVC模型進行顯示,StringLength &必需。
在當存在CRUD操作我們接受POCO類類型如
public ActionResult Create(EFModels.User user) { }
EFModels.User我們的控制器與所述的.edmx一個類(POCO生成的類)和MVC視圖強烈鍵入到MvcWebApplication.Models.User模型。
問題是,我們如何從ActionResult中的MvcWebApplication.Models.User(從Model)到EFModels.User(EF類)創建數據?
我能夠獲得數據,我知道它是相同的屬性名稱。我試着改變類的名字,但仍然有效,但如果我們改變屬性名稱,它不起作用。我無法理解它背後的邏輯。
最初我們從來不知道它沒有工作,我們使用AutoMapper將Model Class轉換爲Edmx POCO類。
任何想法,謝謝。
問題是我們如何通過任何映射將模型類的值賦給EF類。我不需要使用AutoMapper,而不使用我正在獲取的值。
看一看代碼,希望能更好地解釋......
// POCO類
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>
// Contr奧勒方法
public ActionResult Create(EFModels.User user)
{
Model1Container con = new Model1Container();
con.Users.Add(user);
con.SaveChanges();
return View("User");
}
當我打的創建操作,我能夠得到的類型EFModels.User用戶的數據,而無需使用任何類型MvcWebSamp.Models.User和創建按鈕,我張貼的數據AutoMapper。我想知道這是如何工作的?
你不應該在你的用戶界面中使用你的EF模型。 – Phill