我的实体类也需要包含逻辑。
当遇到带有方法的实体时,实体框架代码优先映射器会做什么?
它会忽略并仅将属性映射到数据库吗?
附带问题: 在实体类中拥有逻辑是一种好习惯吗?
答案 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>();
}
}
此处Bar
,ValidationResult
,ValidationContext
不属于模型,Baz
属性不会映射到列。
在你的实体类中拥有逻辑是完全可以的。
答案 1 :(得分:0)
完全忽略方法只会查看属性。 IMO你不应该在实体类中有逻辑。如果你想将逻辑附加到entites,请在扩展方法中执行