实体框架方法映射的默认行为

时间:2012-01-21 00:24:54

标签: .net entity-framework design-patterns architecture

我的实体类也需要包含逻辑。

当遇到带有方法的实体时,实体框架代码优先映射器会做什么?

它会忽略并仅将属性映射到数据库吗?

附带问题: 在实体类中拥有逻辑是一种好习惯吗?

2 个答案:

答案 0 :(得分:1)

当EF执行模型发现时,将忽略实体中的方法。您甚至可以添加额外的属性并将其标记为未映射。

public class Foo
{
     public int Id { get; set; } 

     public Bar Bar { get; set; }

     public string Baz { get; set; }

     public ValidationResult Validate(ValidationContext context)
     {
     }
}

public class MyContext : DbContext
{
    protected override void OnModelCreating(DbModelBuilder modelBuilder)
    {
         modelBuilder.Entity<Foo>().Ignore(f => f.Baz);

         modelBuilder.Ignore<Bar>();
    }
}

此处BarValidationResultValidationContext不属于模型,Baz属性不会映射到列。

在你的实体类中拥有逻辑是完全可以的。

答案 1 :(得分:0)

完全忽略方法只会查看属性。 IMO你不应该在实体类中有逻辑。如果你想将逻辑附加到entites,请在扩展方法中执行