[英]EF 6.1 Fluent API: Ignore property of the base class
我對所有實體都有一個基類:
public class BaseClass
{
public int SomeProperty {get; set;}
}
public class SomeEntity : BaseClass
{
...
}
在某些情況下,我想忽略此屬性。 我可以在OnModelCreating方法中執行以下操作:
public class MyContext : DbContext
{
protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
modelBuilder.Properties<int>()
.Where(p => p.Name == "SomeProperty")
.Ignore();
}
?
您可以嘗試:
modelBuilder.Entity<SomeEntity>().Ignore(p => p.SomeProperty);
這將導致SomeProperty
不會映射到SomeEntity
。
編輯:如果此屬性永遠不應映射到數據庫,則可以在BaseClass
添加NotMapped
批注:
public class BaseClass
{
[NotMapped]
public int SomeProperty {get; set;}
}
這與在所有擴展類中忽略此屬性相同。
此處輸入較晚-但如果有用的話...
最近遇到類似的要求,我這樣做了:-
public class MyContext : DbContext
{
protected override void OnModelCreating(DbModelBuilder mb)
{
mb.Types<EntityBase>()
.Configure(config => config.Ignore(x => x.SomeBaseClassPropertyToIgnore));
}
}
這會將給定的配置應用於從EntityBase繼承的所有實體類型。 可以使用相同的技術基於它們實現的接口來配置實體類型(無論如何可能是一種更好的方法)。
優點是:
請注意,如有必要,可以進一步過濾目標類型:
protected override void OnModelCreating(DbModelBuilder mb)
{
mb.Types<EntityBase>().Where(t => t != typeof(SpecialExceptionEntity)).Configure(...);
}
參考文獻: -
https://msdn.microsoft.com/en-us/library/dn235653(v=vs.113).aspx
https://msdn.microsoft.com/en-us/library/dn323206(v=vs.113).aspx
您可以覆蓋它嗎?
public class SomeEntity : BaseClass
{
[NotMapped]
public override int SomeProperty { get; set; }
...
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.