Используя два ключа в Entity Framework 4: один идентификатор и один внешний? - PullRequest
0 голосов
/ 03 ноября 2011

Можно ли сопоставить сущность с одним индексом идентичности, который автоматически увеличивается, и внешним ключом, связывающим его с другой таблицей?

public class Item
{
    public int ItemID { get; set; }

    [StringLength(20)]
    public string Barcode { get; set; }

    [StringLength(50)]
    public string Name { get; set; }

    [StringLength(50)]
    public string Description { get; set; }

    public decimal Price { get; set; }

    [ForeignKey("ItemCategory")]
    public string CatID { get; set; }

    public virtual ItemCategory ItemCategory { get; set; }        
}

public class ItemCategory
{
    // This should be the identity index
    public int ItemCategoryID { get; set; }

    // This should be the foreign key
    public string CatID { get; set; }

    public string Name { get; set; }

    public virtual ICollection<Item> Items { get; set; }
}

Я видел этот ответ - я должен настроитьмои столы с моделлером?

1 Ответ

1 голос
/ 03 ноября 2011

Внешний ключ в Item должен указывать на первичный ключ в ItemCategory.ФК в EF ведут себя точно так же, как в базах данных.Это означает, что FK должен указывать на свойство с уникальными значениями в основном объекте.Проблема в том, что EF не поддерживает уникальный индекс / ограничение, поэтому единственный способ добиться уникальности - это первичный ключ.

Из-за этого вы не можете указать свой FK на CatID, если он не является частью первичного ключа, нов таком случае у вас будет составной ключ, содержащий как ItemCategoryID, так и CatID, и ваш класс Item должен будет содержать оба из них, чтобы сформировать правильный FK.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...