C# 多重关系ef核心

C# 多重关系ef核心,c#,asp.net-core,entity-framework-core,C#,Asp.net Core,Entity Framework Core,我使用的是实体核心3。我有两门课User和Ticket用户可能有许多票证,还有许多票证票据应具有用户-发送方和用户-接收方。我这样做了: public class User { public int Id { get; set; } public string PasswordHash { get; set; } public string Email { get; public ICollection<Ticket> TicketsToMe { g

我使用的是实体核心3。我有两门课
User
Ticket
<代码>用户可能有许多
票证
,还有许多
票证
<代码>票据应具有
用户
-发送方和
用户
-接收方。我这样做了:

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; }
}
公共类用户
{
公共int Id{get;set;}
公共字符串密码哈希{get;set;}
公共字符串电子邮件{get;
公共ICollection TicketsToMe{get;set;}
公共ICollection TicketsFromMe{get;set;}
}
公务舱票
{
公共int Id{get;set;}
公共字符串标题{get;set;}
public int UserToId{get;set;}
public int UserFromId{get;set;}
公共用户UserTo{get;set;}
公共用户UserFrom{get;set;}
}
我得到了一个错误:无法确定由“User”类型的导航属性“Ticket.UserTo”表示的关系。请手动配置该关系,或使用“[NotMapped]”属性或使用“OnModelCreating”中的“EntityTypeBuilder.ignore”忽略该属性


你有什么想法吗?:)

你可以用其中一个

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

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

公共类用户
{
公共int Id{get;set;}
公共字符串密码哈希{get;set;}
公共字符串电子邮件{get;set;}
[反向属性(“用户到”)]
公共ICollection TicketsToMe{get;set;}
[反向属性(“用户自”)]
公共ICollection TicketsFromMe{get;set;}
}
2-氟恩塔皮

模型创建时受保护的覆盖无效(ModelBuilder ModelBuilder)
{
modelBuilder.Entity()
.HasMany(a=>a.TicketsFromMe)
.WithOne(a=>a.UserFrom)
.HasForeignKey(a=>a.UserFromId).OnDelete(DeleteBehavior.Restrict);
modelBuilder.Entity()
.HasMany(a=>a.TicketsToMe)
.WithOne(a=>a.UserTo)
.HasForeignKey(a=>a.UserToId).OnDelete(DeleteBehavior.Restrict);
}

您可以使用其中一种

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

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

公共类用户
{
公共int Id{get;set;}
公共字符串密码哈希{get;set;}
公共字符串电子邮件{get;set;}
[反向属性(“用户到”)]
公共ICollection TicketsToMe{get;set;}
[反向属性(“用户自”)]
公共ICollection TicketsFromMe{get;set;}
}
2-氟恩塔皮

模型创建时受保护的覆盖无效(ModelBuilder ModelBuilder)
{
modelBuilder.Entity()
.HasMany(a=>a.TicketsFromMe)
.WithOne(a=>a.UserFrom)
.HasForeignKey(a=>a.UserFromId).OnDelete(DeleteBehavior.Restrict);
modelBuilder.Entity()
.HasMany(a=>a.TicketsToMe)
.WithOne(a=>a.UserTo)
.HasForeignKey(a=>a.UserToId).OnDelete(DeleteBehavior.Restrict);
}

我尝试过。我正在使用更新数据库,但出现错误:在表“Tickets”上引入外键约束“FK\u Tickets\u Users\u UserToId”可能会导致循环或多个级联路径。请在删除无操作或更新无操作时指定,或修改其他外键约束。但我不想使用FluentApi。我使用[InverseProperty]对于外键,我使用了nullable int,它正在工作)谢谢!我尝试过。我正在使用更新数据库,但出现错误:在表“Tickets”上引入外键约束“FK_Tickets\u Users\u UserToId”可能会导致循环或多个级联路径。请在删除时指定“无操作”,或在更新时指定“无操作”,或修改其他外键约束。但我不这样做想要使用FluentApi。我使用[InverseProperty],对于外键我使用nullable int,它正在工作)谢谢!