'propertyName' нельзя использовать в качестве свойства для типа объекта 'typeName', поскольку оно настроено как навигация - PullRequest
0 голосов
/ 01 ноября 2019

У меня есть сущность user со следующим:

public class User
{
    [Key, Required]
    public int Id { get; set; }
    public int GenderId { get; set; }
    public virtual Gender Gender { get; set; }
}

В gender:

public class Gender
{
    [Key, Required]
    public int Id { get; set; }
    public virtual ICollection<User> Users { get; set; }
}

Затем внутри моего DbContext у меня есть:

protected override void OnModelCreating(ModelBuilder modelBuilder)
{
    modelBuilder.Entity<User>(user =>
    {
        user
        .HasOne(x => x.Gender)
        .WithMany(x => x.Users)
        .HasForeignKey(x => x.GenderId);
    }

    user.HasIndex(x => x.Gender);
}

Когда я запускаю dotnet ef add migration User, я получаю сообщение об ошибке:

«Пол» нельзя использовать в качестве свойства для типа сущности «Пользователь», поскольку он настроен какнавигация.

1 Ответ

0 голосов
/ 01 ноября 2019

Используйте [ForeignKey("GenderId")] в вашей собственности public virtual Gender Gender { get; set; }. Таким образом, GenderId будет определен как внешний ключ для Ассоциированного пользователя.

См. Обновленный код ниже:

public class User
{
    public int GenderId { get; set; }
    [ForeignKey("Id")]//Gender Primary key
    public virtual Gender Gender { get; set; }
}

Надеюсь, это решит вашу проблему.

Спасибо,

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