Ich konvertiere mein EF POCO-Projekt in Code zuerst. Ich hatte die T4-Vorlage geändert, so dass alle meine Entitäten eine Basisklasse EntityBase
verwenden, die ihnen einige allgemeine Funktionen zur Verfügung stellt, die nicht persistenzbezogen sind.Vererben Sie eine gemeinsame Basisklasse in EF-Code zuerst
Wenn ich [NotMapped]
Attribut auf EntityBase
verwenden, erben alle Entitäten dieses Attribut, und ich bekomme The type 'X.X.Person' was not mapped
, für jeden Typ, den ich versuche, mit EF zu verwenden.
Wenn ich [NotMapped]
auf alle Eigenschaften von EntityBase
verwenden, erhalte ich eine EntityType 'EntityBase' has no key defined. Define the key for this EntityType
Ausnahme
FYI: Ich benutze Ef 4.3.1
Edit: Teil des Codes:
[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!
}
und dann
[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"); }
}
}
Für diese tw o Klassen gibt es nicht fließend api Konfiguration.
Es ist schon abtract. – Alireza
@ Alireza gut, Sie sprechen von CodeFirst und T4-Vorlage. Ist das wirklich CodeFirst? Können Sie zeigen, wo und wie Sie das Beziehungsmapping durchführen? Weil wir in CodeFirst eine abstrakte Basisklasse verwenden, und es funktioniert gut ... –
Ich habe EF-Datenbank zuerst und POCO. Zu dieser Zeit hatte ich T4 gewechselt, so dass alle meine Klassen 'EntityBase' erben. Jetzt, wo wir zuerst zu Code gewechselt haben, existiert das T4 nicht mehr. – Alireza