EntityType 예외로 발견되지 않는 나는 새 레코드를 시도하고 저장할 때이 오류 얻을 :매핑 및 메타 데이터 정보가 나는 마이크로 소프트 엔티티 프레임 워크와 ASP.NET MVC 프레임 워크 2를 시도하고
매핑 및 메타 데이터를 정보 EntityType 'WebUI.Controllers.PersonViewModel'에 대한 찾을 수 없습니다
유형 사람 내보기내 엔티티 프레임 워크 컨테이너 저장 기록은 강하게 사람 에서 파생 클래스 PersonViewModel에 입력 된. 파생 뷰 모델 클래스를 사용하려고 시도 할 때까지 레코드가 제대로 저장됩니다. 누구든지 내보기 모델을 파생시킬 때 메타 데이터 클래스가 작동하지 않는 이유를 설명 할 수 있습니까? 강하게 유형화 된 모델을 사용할 수 있고 내 스토리지 로직 (EF 클래스) 및 프리젠 테이션 로직 (뷰)을 혼합하지 않고도 데이터 주석 (메타 데이터)을 사용할 수 있기를 원합니다.
// Rest of the Person class is autogenerated by the EF
[MetadataType(typeof(Person.Metadata))]
public partial class Person
{
public sealed class Metadata
{
[DisplayName("First Name")]
[Required(ErrorMessage = "Field [First Name] is required")]
public object FirstName { get; set; }
[DisplayName("Middle Name")]
public object MiddleName { get; set; }
[DisplayName("Last Name")]
[Required(ErrorMessage = "Field [Last Name] is required")]
public object LastName { get; set; }
}
}
// From the View (PersonCreate.aspx)
<%@ Page Language="C#" MasterPageFile="~/Views/Shared/Site.Master"
Inherits="System.Web.Mvc.ViewPage<WebUI.Controllers.PersonViewModel>" %>
// From PersonController.cs
public class PersonViewModel : Person
{
public List<SelectListItem> TitleList { get; set; }
} // end class PersonViewModel
업데이트 : 여기에 스택 추적입니다 :
[InvalidOperationException: Mapping and metadata information could not be found for EntityType 'WebUI.Controllers.PersonViewModel'.] System.Data.Objects.ObjectContext.GetTypeUsage(Type entityCLRType) +11531168 System.Data.Objects.ObjectContext.VerifyRootForAdd(Boolean doAttach, String entitySetName, IEntityWrapper wrappedEntity, EntityEntry existingEntry, EntitySet& entitySet, Boolean& isNoOperation) +195 System.Data.Objects.ObjectContext.AddObject(String entitySetName, Object entity) +243 DomainModel.Entities.MyEntities.AddToPeople(Person person) in C:\Users\...\Documents\Visual Studio 2010\Projects\PersonWeb\DomainModel\Entities\MyEntities.Designer.cs:71 DomainModel.Concrete.Repository.SavePerson(Person person) in C:\Users\...\Documents\Visual Studio 2010\Projects\PersonWeb\DomainModel\Concrete\Repository.cs:42 WebUI.Controllers.PersonController.Create(FormCollection form, Int32 hidCancel) in C:\Users\...\Documents\Visual Studio 2010\Projects\PersonWeb\WebUI\Controllers\PersonController.cs:163 lambda_method(Closure , ControllerBase , Object[]) +165 System.Web.Mvc.ReflectedActionDescriptor.Execute(ControllerContext controllerContext, IDictionary`2 parameters) +258 System.Web.Mvc.ControllerActionInvoker.InvokeActionMethod(ControllerContext controllerContext, ActionDescriptor actionDescriptor, IDictionary`2 parameters) +39 System.Web.Mvc.c__DisplayClassd.b__a() +125 System.Web.Mvc.ControllerActionInvoker.InvokeActionMethodFilter(IActionFilter filter, ActionExecutingContext preContext, Func`1 continuation) +640 System.Web.Mvc.ControllerActionInvoker.InvokeActionMethodWithFilters(ControllerContext controllerContext, IList1 filters, ActionDescriptor actionDescriptor, IDictionary`2 parameters) +312 System.Web.Mvc.ControllerActionInvoker.InvokeAction(ControllerContext controllerContext, String actionName) +709 System.Web.Mvc.Controller.ExecuteCore() +162 System.Web.Mvc.c__DisplayClass8.b__4() +58 System.Web.Mvc.Async.c__DisplayClass1.b__0() +20 System.Web.CallHandlerExecutionStep.System.Web.HttpApplication.IExecutionStep.Execute() +453 System.Web.HttpApplication.ExecuteStep(IExecutionStep step, Boolean& completedSynchronously) +371