Невозможно создать внешний ключ с помощью непервичного ключа

#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 внешний ключ может ссылаться на уникальный индекс.