我在使用Entity Framework Core创建数据库时采用了Code First方法。我想要创建两个指向同一张表的外键。
下面是我的示例:用户(User)表将包含userID,信息(Message)表将同时包含接收者ID和发送者ID(这意味着两个值都需要指向同一张表)。
User表的代码:
public class User
{
[Key]
[DatabaseGenerated(DatabaseGeneratedOption.Identity)]
public int Id { get; set; }
[Required]
[MaxLength(50)]
public string UserName { get; set; }
[Required]
[MaxLength(50)]
public string Password { get; set; }
public virtual ICollection<Message> MessagesSent { get; set; }
public virtual ICollection<Message> MessagesReceived { get; set; }
}
消息:
public class Message
{
[Key]
[DatabaseGenerated(DatabaseGeneratedOption.Identity)]
public int id { get; set; }
public User Sender { get; set; }
public User Receiver { get; set; }
public int senderId { get; set; }
public int receiverId { get; set; }
[MaxLength(500)]
public string message { get; set; }
}
我正在使用ASP.NET Core 2,是个新手。我试着使用这个解决方案,但是不幸的是,我无法重写OnModelCreating方法,因为它显示该方法不存在。
PS. 不要在意密码字段,它只是用于测试目的。
谢谢!
OnModelCreating
方法。只是 EF Core 的方法签名不同,所以流畅的 API 也不同。你需要的一切都在文档的关系部分中有详细解释。 - Ivan Stoev