HasOptional аналог атрибута DataAnnotation - PullRequest
3 голосов
/ 13 декабря 2011

Имеется аналог атрибута DataAnnotation для HasOptional метода свободного первого кода API?

Я хочу пометить свое свойство атрибутом вместо использования плавного API.

Это моя текущая модель и код создания OnModel:

public class Employee
{
  #region Properties

  public int EmployeeID { get; set; }
  public string FirstName { get; set; }
  public string LastName { get; set; }

  public int? ManagerID { get; set; }
  public Employee Manager { get; set; }

  #endregion
}

 protected override void OnModelCreating(DbModelBuilder modelBuilder)
  {
    modelBuilder.Entity<Employee>().
      HasOptional(e => e.Manager).
      WithMany().
      HasForeignKey(m => m.ManagerID);
  }

Спасибо

1 Ответ

5 голосов
/ 13 декабря 2011

Нет, такого атрибута не существует (в отличие от атрибута [Required]). Я думаю, что причина в том, что это не нужно, потому что

  • Ваша модель вообще не нуждается в отображении, потому что соглашения должны определять внешний ключ, а также, что связь необязательна (потому что свойство FK имеет значение NULL)
  • Если у вас не будет свойства внешнего ключа в вашей модели, связь всегда будет необязательной, поскольку навигационные ссылки без открытого внешнего ключа всегда являются необязательными по умолчанию. Здесь атрибут [Required] был бы необходим, чтобы сделать необходимые отношения.
  • Если ваше свойство внешнего ключа не может быть обнуляемым, дополнительные отношения не допускаются.

Так что, похоже, нет необходимости в таком атрибуте (если, возможно, не сделана необязательная связь явной в определении класса, но комментарий над свойством сделает то же самое).

...