Sto convertendo il mio progetto EF POCO in Codice prima. Avevo cambiato il modello T4, in modo che tutte le mie entità usassero una classe base, EntityBase
, che fornisce loro alcune funzionalità comuni che non sono correlate alla persistenza.Eredita una classe base comune nel codice EF prima
Se utilizzo l'attributo [NotMapped]
su EntityBase
, tutte le entità ereditano questo attributo e ottengo uno The type 'X.X.Person' was not mapped
, per qualsiasi tipo che cerco di utilizzare con EF.
Se uso [NotMapped]
su tutte le proprietà di EntityBase
, ottengo un'eccezione EntityType 'EntityBase' has no key defined. Define the key for this EntityType
FYI: Io uso Ef 4.3.1
Edit: parte del codice:
[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!
}
e poi
[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"); }
}
}
Per questi tw o le classi non hanno una configurazione API fluente.
E 'già abtract. – Alireza
@Alireza bene, parli di CodeFirst e del modello T4. Questo è veramente CodeFirst? Puoi mostrare dove e come si realizza la relazione? Perché usiamo una classe astratta di base in CodeFirst, e funziona bene ... –
Ho usato il database EF prima e POCO. A quel tempo avevo cambiato T4 in modo che tutte le mie classi ereditassero 'EntityBase'. Ora che siamo passati al codice, il T4 non esiste più. – Alireza