Отношение внешнего ключа в приложении LINQ для Windows Phone Mango - PullRequest
0 голосов
/ 22 января 2012

Я только начинаю писать приложение для WP (Mango) и сталкиваюсь с проблемами, связанными с отображением отношения внешнего ключа для таблицы поиска с помощью LINQ. Документы MSDN, похоже, не помогли (возможно, я смотрю не в том месте). В основном у меня 2 таблицы,

OrderType (состоит из данных поиска, на которые ссылаются Orders)

Заказы (столбец с именем OrderTypeID будет указывать на таблицу выше)

в основном отношения 1-ко-многим.

Вот как я описал в LINQ:

[Table(Name = "OrderTypes")]
public partial class OrderType
{
    private Int16 _OrderTypeID;
    private string _Name;
    private string _ShortName;

    [Column(Storage = "_OrderTypeID", DbType = "Int NOT NULL", IsPrimaryKey = true, CanBeNull=false)]
    public Int16 Id {get; set;}

    [Column(Storage = "_Name", DbType = "NVarChar(50) NOT NULL", CanBeNull = false)]
    public string Name {get;set;}

    [Column(Storage= "_ShortName", DbType= "NVarChar(50) NOT NULL", CanBeNull=false)]
    public string ShortName {get;set;}
}

[Table(Name = "Orders")]
public partial class Order
{
    private Int16 _OrderID;
    private Int16 _OrderTypeID;
    private string _Description;

    [Column(Storage = "_OrderID", DbType = "Int NOT NULL", IsPrimaryKey = true)]
    public Int16 Id {get;set;}

    [Column(DbType = "Int", CanBeNull= true)]
    public Int16 OrderTypeID { get; set; }

    [Column(DbType = "NVarChar(1000) NULL", CanBeNull = true)]
    public string Description { get; set; }

}

Я запутался: как использовать классы EntityRef и / или EntitySet для описания этой взаимосвязи в моем коде.

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

1 Ответ

0 голосов
/ 23 января 2012
  • EntitySet находится на стороне "1", он содержит объекты на стороне "многих".

  • EntityRef находится на объекте "много", ссылаясь на (родительский) объект на стороне "1".

В вашем случае Order будет иметь EntityRef<OrderType>. OrderType, в свою очередь, может иметь EntitySet<Order>, хотя я думаю, что последнее не имело бы особого смысла (семантически, вероятно, не сказали бы, что у OrderType "есть" ордера, как у Order "есть" строки ордеров).

В базе данных Adventureworks при отображении аналогичной взаимосвязи Product и ProductCategory класс Product имеет свойство ProductCategory:

private EntityRef<ProductCategory> _ProductCategory;

[System.Data.Linq.Mapping.AssociationAttribute(Storage="_ProductCategory",
    ThisKey="ProductCategoryID", OtherKey="ProductCategoryID", IsForeignKey=true)]
public ProductCategory ProductCategory
{
  get { return this._ProductCategory.Entity; }
  set { this._ProductCategory.Entity = value; }
}
...