Wenn ich versuche, ein Update-Datenbank zu tun, ich diesen Fehler:Die Navigationseigenschaft 'SenderId' ist keine deklarierte Eigenschaft vom Typ 'Gespräch'
The navigation property 'SenderId' is not a declared property on type 'Conversation'. Verify that it has not been explicitly excluded from the model and that it is a valid navigation property.
bearbeiten
I Problem glauben ist in Zuordnungsbeziehungen zwischen Konversation und Benutzer, da Konversation und Benutzer mit zwei Ein-zu-Viele-Beziehungen verbunden sind, dh Konversation hat zwei Fremdschlüssel, die auf Benutzer zeigen:
Hier ist, wie Benutzer und Konversation verbunden sind:
Benutzer:
public class User
{
[Key]
[HiddenInput(DisplayValue = false)]
[DatabaseGenerated(DatabaseGeneratedOption.Identity)]
public Guid UserId { get; set; }
public virtual ICollection<Conversation> ConversationSenders { get; set; }
public virtual ICollection<Conversation> ConversationRecievers { get; set; }
Gespräch:
public class Conversation
{
[Key]
[HiddenInput(DisplayValue = false)]
public Guid ConversationId { get; set; }
[ForeignKey("SenderId")]
public Guid SenderId { get; set; }
[ForeignKey("RecieverId")]
public Guid RecieverId { get; set; }
[InverseProperty("ConversationSenders")]
public virtual User Sender { get; set; }
[InverseProperty("ConversationRecievers")]
public virtual User Reciever { get; set; }
}
Hier ganze Code:
Benutzer:
public class User
{
[Key]
[HiddenInput(DisplayValue = false)]
[DatabaseGenerated(DatabaseGeneratedOption.Identity)]
public Guid UserId { get; set; }
[DatabaseGenerated(DatabaseGeneratedOption.Identity)]
public Guid CollegeId { get; set; }
public int RoleId { get; set; }
[Required]
[DataType(DataType.EmailAddress)]
public string Email { get; set; }
[Required]
[DataType(DataType.Password)]
public string Password { get; set; }
[Required]
public string Name { get; set; }
[Required]
public string Surname { get; set; }
public string Gender { get; set; }
//role
public DateTime? DateOfBirth { get; set; }
public string ImageURL { get; set; }
[ForeignKey("CollegeId")]
public virtual College College { get; set; }
[ForeignKey("RoleId")]
public virtual UserRole UserRole { get; set; }
public virtual ICollection<Advert> Adverts { get; set; }
public virtual ICollection<Competition> Competitions { get; set; }
public virtual ICollection<Message> Messages { get; set; }
public virtual ICollection<Conversation> ConversationSenders { get; set; }
public virtual ICollection<Conversation> ConversationRecievers { get; set; }
public virtual ICollection<UserOS> UserOses { get; set; }
Gespräch:
public class Conversation
{
[Key]
[HiddenInput(DisplayValue = false)]
[DatabaseGenerated(DatabaseGeneratedOption.Identity)]
public Guid ConversationId { get; set; }
[ForeignKey("SenderId")]
[DatabaseGenerated(DatabaseGeneratedOption.Identity)]
public Guid SenderId { get; set; }
[ForeignKey("RecieverId")]
[DatabaseGenerated(DatabaseGeneratedOption.Identity)]
public Guid RecieverId { get; set; }
[InverseProperty("ConversationSenders")]
public virtual User Sender { get; set; }
[InverseProperty("ConversationRecievers")]
public virtual User Reciever { get; set; }
public virtual ICollection<Message> Messages { get; set; }
}
Nachricht
public class Message
{
[Key]
[HiddenInput(DisplayValue = false)]
[DatabaseGenerated(DatabaseGeneratedOption.Identity)]
public Guid MessageId { get; set; }
[HiddenInput(DisplayValue = false)]
public Guid UserId { get; set; }
[HiddenInput(DisplayValue = false)]
public Guid ConversationId { get; set; }
public string Text { get; set; }
public bool? IsSeen { get; set; }
[ForeignKey("UserId")]
public virtual User ConversationSender { get; set; }
[ForeignKey("ConversationId")]
public virtual Conversation Conversation { get; set; }
}
ich sie entfernt, aber immer noch derselbe Fehler – hyperN
können Sie Code für Sender und Post Empfänger auch? –
@ Behnam Esmaili Sender und Empfänger sind eigentlich Benutzer, es gibt zwei 1 zu viele Verbindungen von Konversation zum Benutzer, Sie können sie in Code nachschlagen, aber ich werde diesen genauen Teil hier pate, also werde ich es einfacher sein read code: Benutzer 'öffentliche virtuelle ICollection ConversationSenders {get; einstellen; } öffentliche virtuelle ICollection ConversationRecievers {get; einstellen; } ' –
hyperN