多重关系ef核心



我使用的是实体核心3。我有两个类UserTicketUser对我来说可能有很多Ticket,对我来说也可能有许多TicketTicket应该有User-发送方和User-接收方。我这么做了:

public class User
{
public int Id { get; set; }
public string PasswordHash { get; set; }
public string Email { get; 
public ICollection<Ticket> TicketsToMe { get; set; }
public ICollection<Ticket> TicketsFromMe { get; set; }
}
public class Ticket
{
public int Id { get; set; }
public string Title { get; set; }
public int UserToId { get; set; }
public int UserFromId { get; set; }
public User UserTo { get; set; }
public User UserFrom { get; set; }
}

我得到了错误:无法确定由"User"类型的导航属性"Ticket.UserTo"表示的关系。手动配置关系,或使用"[NotMapped]"特性或使用"OnModelCreating"中的"EntityTypeBuilder.ignore"忽略此属性

你有什么想法吗?:(

您可以使用其中一个

1-元数据。可以使用InverseProperty来定义关系。

如果使用元数据,则应将UserToIdUserFromId设置为Nullable

public class User
{
public int Id { get; set; }
public string PasswordHash { get; set; }
public string Email { get; set; }
[InverseProperty("UserTo")]
public ICollection<Ticket> TicketsToMe { get; set; }
[InverseProperty("UserFrom")]
public ICollection<Ticket> TicketsFromMe { get; set; }
}

2-FluentPi

protected override void OnModelCreating(ModelBuilder modelBuilder)
{
modelBuilder.Entity<User>()
.HasMany(a => a.TicketsFromMe)
.WithOne(a => a.UserFrom)
.HasForeignKey(a => a.UserFromId).OnDelete(DeleteBehavior.Restrict); 
modelBuilder.Entity<User>()
.HasMany(a => a.TicketsToMe)
.WithOne(a => a.UserTo)
.HasForeignKey(a => a.UserToId).OnDelete(DeleteBehavior.Restrict); 
}

最新更新