[英]When using Entity Framework Code First, is it acceptable to add properties to a class that are not mapped to a database table at all?
就像標題中指出的那樣,我可以向我的一個POCO中添加一個未映射到DB列(數據庫是首先創建的)的額外屬性,並且該屬性不會保留。 此屬性將僅在應用程序內使用,並且永遠不需要保留。
除了將屬性定義為普通屬性之外,是否還需要采取其他措施來實現此目的?
是的,您絕對可以做到。 這是我有一個配置類的示例:
public class ForCommentEntities:EntityTypeConfiguration<Comment> {
public ForCommentEntities(String schemaName) {
this.HasRequired(e => e.SystemUser)
.WithMany()
.Map(m => m.MapKey("SystemUserID"));
this.Ignore(e => e.Remarks);
this.ToTable("Comment", schemaName);
}
}
this.Ignore
調用是重要的部分。 它會將lambda表達式帶到類的屬性之一上。 這是使EFCF出色(IMO)的部分原因,因為它使配置詳細信息不包含在POCO中。
配置類將在您的Context
像這樣使用:
protected override void OnModelCreating(DbModelBuilder modelBuilder) {
base.OnModelCreating(modelBuilder);
var schemaName = Properties.Settings.Default.SchemaName;
modelBuilder.Configurations
.Add(new Configuration.ForCommentEntities(schemaName))
// ...other configuration options here
;
}
關於Code First和POCO的好處是,您現在可以擁有EF使用的業務對象,而無需使用映射器(例如AutoMapper或您自己的映射器)。 這也意味着不必用EF屬性和更多屬性來裝飾您的對象(因此,Yuck在上面回答了)。 但是,另一個好處是可以向對象添加方法或屬性。 一個示例是集合(例如地址),並且您想要一個經過排序或過濾的投影。 另一個方法是在調用SaveChange()之前進行業務規則驗證。 眾所周知,可能性是無限的,但重點是您可以並且應該將這些對象用作從數據層填充的業務對象。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.