实体框架代码优先 - 如何在保存时忽略列

Sim*_*ams 5 .net c# entity-framework entity-framework-4.1 entity-framework-5

我有一个名为Client的类,它首先使用Entity Framework代码映射到数据库表.该表有一个我需要在Client类中可用的计算字段,但我知道不可能写入该字段.是否有一种方法可以在保存时配置实体框架以忽略该属性,但在读取时包含该属性?

我已尝试在配置类中使用Ignore方法,或使用[NotMapped]属性,但这些会阻止从数据库中读取属性.

tpe*_*zek 9

您可以使用DatabaseGeneratedAttributeDatabaseGeneratedOption.Computed选项:

[DatabaseGenerated(DatabaseGeneratedOption.Computed)]
public ComputedPropertyType ComputedProperty { get; set; }
Run Code Online (Sandbox Code Playgroud)

或者如果您更喜欢流利的api,您可以HasDatabaseGeneratedOptionDbContext课堂上使用方法:

public class EntitiesContext : DbContext
{
    public DbSet<EntityType> Enities { get; set; }

    protected override void OnModelCreating(DbModelBuilder modelBuilder)
    {
        modelBuilder.Entity<EntityType>().Property(e => e.ComputedProperty).HasDatabaseGeneratedOption(DatabaseGeneratedOption.Computed);
    }
}
Run Code Online (Sandbox Code Playgroud)