먼저 EF POCO 프로젝트를 코드로 변환하고 있습니다. T4 템플릿을 변경하여 모든 엔티티가 지속성과 관련없는 공통 기능을 제공하는 기본 클래스 EntityBase
을 사용합니다.EF 코드에서 공통 기본 클래스 상속
EntityBase
에 [NotMapped]
속성을 사용하면 EF와 함께 사용하려고하는 모든 유형에 대해 모든 항목에이 속성이 상속되며 The type 'X.X.Person' was not mapped
이 표시됩니다. 내가 EntityBase
의 모든 속성에 [NotMapped]
를 사용하는 경우
, 나는
참고 EntityType 'EntityBase' has no key defined. Define the key for this EntityType
예외를 얻을 : 내가 사용 Ef는 4.3.1
편집 : 코드의 일부 :
[DataContract(IsReference = true)]
public abstract class EntityBase : INotifyPropertyChanged, INotifyPropertyChanging
{
[NotMapped]
public virtual int? Key
{
get { return GetKeyExtractor(ConversionHelper.GetEntityType(this))(this); }
}
//other properties and methods!
}
및 그 다음
[DataContract(IsReference = true), Table("Person", Schema = "PER")]
public abstract partial class Person : BaseClasses.EntityBase, ISelfInitializer
{
#region Primitive Properties
private int? _personID;
[DataMember,Key]
public virtual int? PersonID
{
get{ return _personID; }
set{ SetPropertyValue<int?>(ref _personID, value, "PersonID"); }
}
}
이러한 tw o 클래스에는 유창한 API 설정이 없습니다.
그것은 abtract 이미 여기에 빠른 테스트 응용 프로그램의 전체입니다. – Alireza
@Alireza 글쎄, 당신은 CodeFirst와 T4 템플릿에 대해 이야기합니다. 이것이 CodeFirst입니까? 관계 매핑을 수행하는 위치와 방법을 보여줄 수 있습니까? 왜냐하면 우리는 CodeFirst에서 기본 추상 클래스를 사용하기 때문에 잘 작동합니다 ... –
저는 EF 데이터베이스와 POCO를 먼저 사용했습니다. 그때 나는 모든 클래스가'EntityBase'를 상속받을 수 있도록 T4를 변경했습니다. 이제 코드로 전환 했으므로 T4는 더 이상 존재하지 않습니다. – Alireza