Невозможно определить отношение, представленное свойством навигации при обращении моделей друг к другу - PullRequest
0 голосов
/ 25 января 2020

У меня есть две модели, которые я пытаюсь подключить в моей БД

public class User
{
    public int Id { get; set; }
    public string FirstName { get; set; }
    public string LastName { get; set; }

    public virtual List<Message> Messages { get; set;  }

}

и

public class Message
{
    public int Id { get; set; }
    public string MessageContent { get; set; }  
    public User Sender { get; set; }
    public User Receiver { get; set;  }

}

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

Unable to determine the relationship represented by navigation property 'Message.Sender' of type 'User'.

Идея состоит в том, что у пользователя есть список отправленных им сообщений, и в каждом сообщении есть запись о пользователе, отправившем сообщение, и другой идентификатор пользователя, который получил сообщение.

что мне здесь не хватает?

Редактировать: это приложение для сборки веб-сайтов, использующее EFCORE

1 Ответ

0 голосов
/ 25 января 2020

Проблема, с которой вы столкнулись, заключается в том, что у сущности Message есть две связи (внешние ключи) с сущностью User. И в User есть только одно навигационное свойство. EF не знает, на какие отношения вы ссылаетесь. Когда есть только одно отношение, это будет работать. Но когда у вас есть несколько отношений, вы должны явно указать, к какому из них относится каждое навигационное свойство.

попробуйте сделать это,

[InverseProperty("Sender")] 
public ICollection<Message> Messages { get; set; } //virtual key word not required

В вашем случае, поскольку User имеет два вида отношений с Message, у меня было бы два свойства навигации, как это,

[InverseProperty("Sender")] 
public ICollection<Message> MessagesSent { get; set; }

[InverseProperty("Reciever")] 
public ICollection<Message> MessagesRecieved { get; set; }

См. Эту статью для получения дополнительной информации: https://www.entityframeworktutorial.net/code-first/inverseproperty-dataannotations-attribute-in-code-first.aspx

...