EF Migration не работает из-за внешнего ключа GUID - PullRequest
0 голосов
/ 07 декабря 2018

В моем приложении .NET Core 2.1 есть следующие модели:

public class Product
{
    [Key]
    public Guid ProductId { get; set; }

    public virtual ICollection<Favourite> Favourites { get; set; }

}

public class Retailer
{
    [Key]
    public Guid BusinessId {get; set;}

    public virtual ICollection<Favourite> Favourites { get; set; }
}

public class Favourite
{

    [Key]
    public Guid FavouriteId { get; set; }

    [ForeignKey("Retailer_BusinessId")]
    public virtual Retailer Business { get; set; }

    [ForeignKey("Product_ProductId")]
    public virtual Product Product { get; set; }

}

При попытке выполнить миграцию EF появляется следующая ошибка:

Отношение «Favourite.Business» к «Retailer.Favourites» со свойствами внешнего ключа {'Retailer_BusinessId': Nullable} не может быть нацелено на первичный ключ {'BusinessId': Guid}, поскольку он не совместим.Настройте основной ключ или набор совместимых свойств внешнего ключа для этого отношения.

Я подозреваю, что это потому, что я использую Guid в качестве моих ключей во внешних таблицах.Как мне сказать EF что?

1 Ответ

0 голосов
/ 07 декабря 2018

Похоже, EF ожидает, что атрибут ForeignKey ссылается на свойство навигации.Я смог воспроизвести ошибку, которую вы получили, и после внесения следующего изменения оно успешно мигрировало.иметь свойство, а затем указать только имя свойства в атрибуте ForeignKey.

public class Favourite
{
    [Key]
    public Guid FavouriteId { get; set; }

    public Guid BusinessId { get; set; }

    public Guid ProductId { get; set; }

    [ForeignKey("BusinessId")]
    public virtual Retailer Business { get; set; }

    [ForeignKey("ProductId")]
    public virtual Product Product { get; set; }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...