我將我的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
例外
FYI:我用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。那時我改變了T4,以便我所有的類繼承'EntityBase'。現在我們先切換到代碼,T4不再存在。 – Alireza