Поведение по умолчанию для сопоставления метода структуры объекта - PullRequest
0 голосов
/ 21 января 2012

Мои классы сущностей также должны содержать логику.

Что будет делать средство отображения кода в рамках структуры сущностей при обнаружении сущности с методом?

Будет ли он просто игнорировать и отображать только свойства в базу данных?

Дополнительный вопрос: Является ли хорошей практикой вообще иметь логику в классах сущностей?

Ответы [ 2 ]

1 голос
/ 21 января 2012

Методы в ваших объектах будут игнорироваться, когда 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 голосов
/ 21 января 2012

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

...