У меня есть 2 сущности, которым нужны FK друг на друга:
public class MessagesGroup
{
[Key]
[DatabaseGenerated(DatabaseGeneratedOption.None)]
public long GroupId { get; set; }
public string Title { get; set; }
public DateTime Created { get; set; }
public int? LastMessageId { get; set; }
[Required]
[ForeignKey("GroupId,LastMessageId")]
public virtual Messages Message { get; set; }
}
public class Messages
{
[Key]
[Column(Order = 0)]
[DatabaseGenerated(DatabaseGeneratedOption.None)]
public long GroupId { get; set; }
[Key]
[Column(Order = 1)]
[DatabaseGenerated(DatabaseGeneratedOption.None)]
public int MessagesId { get; set; }
public int UserId { get; set; }
[StringLength(2000)]
public string Text { get; set; }
public DateTime Date { get; set; }
[StringLength(255)]
public string AttachmentUrl { get; set; }
[Required]
[ForeignKey("GroupId")]
public virtual MessagesGroup MessageGroup { get; set; }
[Required]
[ForeignKey("GroupId,UserId")]
public virtual MessagesGroupUsers MessagesGroupUsers { get; set; }
}
Как получить FK для обеих сущностей, потому что теперь я получаю ошибку
Невозможно определитьосновной конец ассоциации между типами 'MDC.Repository.Model.Messages' и 'MDC.Repository.Model.MessagesGroup'.Основной конец этой ассоциации должен быть явно сконфигурирован с использованием либо API-интерфейса связи, либо аннотаций данных. И я попробовал другие решения, ничего не помогло, появились только новые ошибки.
РЕДАКТИРОВАТЬ
Я попробовал это решение
public class MessagesGroup
{
[Key]
[DatabaseGenerated(DatabaseGeneratedOption.None)]
public long GroupId { get; set; }
public int? LastMessageId { get; set; }
public virtual Messages Message { get; set; }
}
public class Messages
{
[Key]
[Column(Order = 0)]
[ForeignKey("MessageGroup")]
[DatabaseGenerated(DatabaseGeneratedOption.None)]
public long GroupId { get; set; }
[Key]
[Column(Order = 1)]
[DatabaseGenerated(DatabaseGeneratedOption.None)]
public int MessagesId { get; set; }
public int UserId { get; set; }
[Required]
public virtual MessagesGroup MessageGroup { get; set; }
[Required]
[ForeignKey("GroupId,UserId")]
public virtual MessagesGroupUsers MessagesGroupUsers { get; set; }
}
И теперь я получаю
Кратность недопустима в роли 'Messages_MessageGroup_Source' в отношении 'Messages_MessageGroup'.Поскольку свойства зависимой роли не являются ключевыми свойствами, верхняя граница кратности зависимой роли должна быть «*».
И, глядя на это новое сообщение, я чувствую, что он может »t сопоставить с msgGroupId, но я не могу понять, почему.