如何使用CodeFirst EF4创建非持久化属性?
微软表示可以使用StoreIgnore属性,但我找不到它。
是否有一种使用EntityConfiguration设置这个的方法?
如何使用CodeFirst EF4创建非持久化属性?
微软表示可以使用StoreIgnore属性,但我找不到它。
是否有一种使用EntityConfiguration设置这个的方法?
在EF Code-First CTP5中,您可以使用[NotMapped]
注释。
using System.ComponentModel.DataAnnotations;
public class Song
{
public int Id { get; set; }
public string Title { get; set; }
[NotMapped]
public int Track { get; set; }
[System.ComponentModel.DataAnnotations.Schema.NotMapped]
,这似乎解决了问题。 - Clarice BouwerAdd the 'dynamic' keyword to the property, which stops the mapper persisting it:
private Gender gender;
public dynamic Gender
{
get { return gender; }
set { gender = value; }
}
Override OnModelCreating in DBContext and remap the whole type, omitting the properties you don't want to persist:
protected override void OnModelCreating(System.Data.Entity.ModelConfiguration.ModelBuilder modelBuilder)
{
base.OnModelCreating(modelBuilder);
modelBuilder.Entity<Person>().MapSingleType(p => new { p.FirstName, ... });
}
modelBuilder.Entity<Person>().Property(p => p.IgnoreThis).Ignore();
OnModelCreating
并使用DbModelBuilder的Ignore()
方法。假设您有一个“歌曲”实体:public class MyContext : DbContext
{
protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
modelBuilder.Entity<Song>().Ignore(p => p.PropToIgnore);
}
}
public class MyContext : DbContext
{
protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
modelBuilder.Configurations.Add(new SongConfiguration());
}
}
public class SongConfiguration : EntityTypeConfiguration<Song>
{
public SongConfiguration()
{
Ignore(p => p.PropToIgnore);
}
}
在模型类中添加 System.ComponentModel.DataAnnotations.Schema。(必须包括“SCHEMA”)
在要保留不持久化(即不保存到数据库)的字段上添加 [NotMapped] 数据注释。
这将防止它们作为列添加到数据库表中。
请注意 - 以前的答案可能包含了这些部分,但它们没有完整的“using”子句。它们只是省略了“schema” - 在其中定义了 NotMapped 属性。