#sql-server #asp.net-mvc
#sql-server #asp.net-mvc
Вопрос:
Я пытаюсь создать базу данных под названием Пожертвование, внутри нее этот столбец получил значение IC, его is и идентификационный номер, поэтому я уже установил его в IsUnique
, но каким-то образом он все еще возвращает сообщение об ошибке
Donation_Customers_Target_Donation_Customers_Source : : Типы всех свойств в зависимой роли ссылочного ограничения должны совпадать с соответствующими типами свойств в главной роли. Тип свойства ‘IC’ для объекта ‘Donation’ не соответствует типу свойства ‘CustomerID’ для объекта ‘Customers’ в ссылочном ограничении ‘Donation_Customers’.
И вот модель пожертвования и клиентов
Клиент
[Key]
public int CustomerID { get; set; }
[Display(Name = "IC")]
[Index(IsUnique = true)]
[Required(AllowEmptyStrings = false, ErrorMessage = "IC is required")]
[MinLength(14)][MaxLength(14)]
public string IC { get; set; }
[Display(Name = "First Name")]
[Required(AllowEmptyStrings = false, ErrorMessage = "First name required")]
public string FirstName { get; set; }
Пожертвование
[Key]
public int DonationId { get; set; }
public DateTime? TransacTime { get; set; }
public int Amount { get; set; }
public string IC { get; set; }
[ForeignKey("IC")]
public Customers Customers { get; set; }
Комментарии:
1. Какая версия EF? EF6 потребует, чтобы вы объявили IC в качестве ключа клиента.
2. @DavidBrowne-Microsoft использует EF6. Есть ли какой-либо способ сделать это, используя непервичный ключ в качестве внешнего ключа, или это невозможно.
3. Вы можете использовать любой ключ в качестве ключа сущности. EF не важно, какой именно.
4. @DavidBrowne-Microsoft установила IC в качестве внешнего ключа, но возвращает, что IC не является основным для таблицы
5. В EF6 объект может иметь только один ключ. Поэтому переключите атрибут [Key] на IC. На сервере SQL внешний ключ может ссылаться на уникальный индекс.