데이터 주석을 사용하여 부분 클래스를 사용하여 Entity Framework 모델의 유효성을 검사하려고합니다.MetadataType, Annotations 및 EF에 몇 가지 문제가 있음
이 article (MSDN)에 부분 클래스가 데이터 모델과 동일한 네임 스페이스에 있어야한다고 들었습니다. MyApp.Backend.Models에 위치한 내 일부 클래스는 다음과 같습니다 그래서 내 데이터 모델은 EntityFrameworkDataProvider에 있습니다
[HttpPost]
public ViewResult Edit(Item item)
{
if (!TryUpdateModel(item))
{
return View(item);
}
return View("Details", item);
}
:
using System.ComponentModel.DataAnnotations;
namespace EntityFrameworkDataProvider
{
[MetadataType(typeof(ItemMetaData))]
public partial class Item { }
public class ItemMetaData
{
[ScaffoldColumn(false)]
public object CreateDate { get; set; }
[Required]
public string DisplayName { get; set; }
[Required]
public string Description { get; set; }
}
}
이 같은 내 컨트롤러 클래스에서 모델을 검증 오류없이 컴파일됩니다. 그러나 항목을 편집 할 때이 오류는 내가 얻은 것입니다.
컴파일러 오류 메시지 : CS0433 : 'long-path.DLL'및 'long-path.DLL'형식에 'EntityFrameworkDataProvider.Item'형식이 있습니다. '
나는 Item 클래스가 두 번 또는 뭔가 컴파일되고 있다고 생각한다. 이 오류는 어떻게 방지해야합니까?
올바른지는 모르겠지만 두 어셈블리가 "충돌"한다는 사실은 바뀌지 않습니다. 팁을 위해 +1. – Mickel
"Item"클래스가 별도의 어셈블리에 정의되어 있으며 별도로 다른 코드가 포함 된 어셈블리와 다른 의미가 있습니까? –
두 개의 프로젝트 ... EntityFrameworkDataProvider.Item 및 MyApp.Backend.Models (asp.net mvc app)입니다. 별도의 프로젝트 == 별도의 어셈블리 인 경우 확실하지 않은가요? – Mickel