2012-01-21 3 views
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 свойство не будет отображаться в столбце.

Его совершенно нормально иметь логику в классах сущностей.

0

Он просто игнорирует методы полностью, он только смотрит на свойства. ИМО у вас не должно быть логики в классах сущностей. Если вы хотите присоединить логику к entite делать это в методах расширения

Смежные вопросы