Как использовать System.ComponentModel.DataAnnotations.AssociationAttribute - PullRequest
9 голосов
/ 22 марта 2011

Некоторое время назад я задал этот вопрос: Какова цель каждого из атрибутов System.ComponentModel.DataAnnotations?

Однако мне не повезло с получением ответов. Этот вопрос был несколько широким в том смысле, что он запрашивал документацию по каждому атрибуту dataannotation. В данный момент меня больше всего интересует атрибут Association.

Я использую ASP.NET MVC3 с Entity Framework 4 и хотел бы аннотировать мои POCO. Я использую внешние ключи в своих POCO (как-то не так, но, похоже, это принято). Как аннотировать мой POCO с атрибутом Association? На какие свойства я его наложу (Association свойство и / или свойство внешнего ключа)? Каковы параметры thisKey и otherKey. thisKey это ключ POCO или внешний ключ в этом POCO?

Тогда, наконец, что будет использовать этот атрибут? Есть ли что-то в ASP.NET MVC?

Заранее спасибо!

Ответы [ 2 ]

6 голосов
/ 22 марта 2011

Имейте в виду, что не все атрибуты, предоставленные в пространстве имен DataAnnotations, относятся к платформе Entity.Я думал, что AssociationAttribute используется в Linq-to-sql, но на самом деле это другой класс с тем же именем, что и сборка System.Data.Linq.Я только что проверил использование AssociationAttribute в Reflector, и похоже, что ни Entity Framework (включая сначала код), ни ASP.NET MVC, ни ASP.NET Dynamic data, ни WPF его не используют.

5 голосов
/ 22 марта 2011

AssociationAttribute (в сочетании с ExternalReferenceAttribute) используется службами RIA WCF в Silverlight.С помощью этого атрибута клиент может разрешать ассоциации между сущностями из разных доменов.

Я думаю, что это специфично для RIA Services. Здесь - пошаговое руководство по применению в службах RIA WCF.

Простой пример выглядит как

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

public class Order{

  public int Id {get;set;}

  public int CustomerId {get;set;}  //ForeignKey of the Customer

  [ExternalReference]
  [Association("Customer", "CustomerId", "Id")]
  public Customer {get;set;}
}
...