Первичный ключ должен называться «Id» с помощью EFCode? - PullRequest
2 голосов
/ 25 февраля 2011

Я пишу приложение с использованием ASP MVC 3 и на основе учебника музыкального магазина. Я установил EFCode Framework и создал базу данных, щелкнув правой кнопкой мыши папку App_Data. Столбцы таблицы «Клиент» имеют вид IdClient Имя

IdClient был определен как первичный ключ, щелкнув по нему правой кнопкой мыши, а для Identity было установлено значение Да, автоинкремент и т. Д. Все выглядит хорошо ... Когда я запускаю приложение, оно говорит мне, что в этой таблице не определен ключ !! 1003 *

Если я переименую IdClient в Id, проблем нет, мой вопрос, почему он не определяет IdClient в качестве первичного ключа? В учебной базе данных первичные ключи не определены с именем «Id» ...

Спасибо!

Ответы [ 2 ]

5 голосов
/ 25 февраля 2011

Полагаю, вы имеете в виду Entity Framework Code First.

Вы можете добавить атрибут [Key] в столбец.

public class Product
{
    [Key]
    public int TestID { get; set; }
}

Entity Framework Code First использует соглашение поверх конфигурации и по умолчанию будет искать столбец с именем «ID», чтобы сделать его первичным ключом. В противном случае вы должны декларативно.

2 голосов
/ 25 февраля 2011

Вы должны сделать одну из двух вещей

1) Используйте DataAnnotations, и в своем классе модели присвойте свойству idClient атрибут [Key]. Это скажет EF, что idClient - ваш первичный ключ.

2) В классе контекста данных вы можете переопределить метод OnModelCreating(ModelBuilder modelBuilder). В этом методе вы должны вызывать что-то вроде modelBuilder.Entity<MyEntity>().HasKey(x => x.idClient);, чтобы EF знал, что это столбец идентификаторов и ключей.

По умолчанию EF4 Code First автоматически устанавливает столбец в качестве первичного ключа, если он называется Id или <entity name>Id.

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