C# 多重关系ef核心
我使用的是实体核心3。我有两门课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
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,它正在工作)谢谢!