C# 实体框架中的单边一对一关系
我有两个模型类(C# 实体框架中的单边一对一关系,c#,entity-framework-core,one-to-one,C#,Entity Framework Core,One To One,我有两个模型类(Tickets和Activities),其中Activities更像是一个查找表,不应该包含任何导航属性或其他实体的FK Tickets中的记录应该有一个活动,但在整个Tickets表中,将有许多相同的活动。活动需要是一个表,而不是(例如)枚举,因为将来可能会进行更新和修改 虽然这看起来很简单,但我经常遇到错误,比如标识设置为off 我的模型: public class Tickets { public int ID {get; set;} // fk
Tickets
和Activities
),其中Activities
更像是一个查找表,不应该包含任何导航属性或其他实体的FK
Tickets
中的记录应该有一个活动
,但在整个Tickets
表中,将有许多相同的活动
。活动需要是一个表,而不是(例如)枚举,因为将来可能会进行更新和修改
虽然这看起来很简单,但我经常遇到错误,比如标识设置为off
我的模型:
public class Tickets
{
public int ID {get; set;}
// fk
public int ActivityID {get; set;
// nav property
public Activity Activity {get; set;}
// other properties.
}
public class Activity
{
public int ID {get; set;}
public int RankOrder {get; set;}
//other properties
}
我已为票证
模型指定了域映射:
builder.HasOne(t => t.Activity)
.WithMany()
.HasForeignKey(t => t.ActivityID);
基于这篇SO文章和blogpost:但我没有让它工作,我最近的错误消息是:
SqlException:当identity\u insert设置为OFF时,无法在表“Activity”中为identity列插入显式值
此外,通过这种映射,EF似乎在活动表中创建了一个Ticket列,这是我不想要的
builder.Entity<Ticket>()
.HasOne(t => t.Activity)
.WithMany(a => a.Ticket)
.HasForeignKey(t => t.ActivityID);
builder.Entity()
.HasOne(t=>t.Activity)
.WithMany(a=>a.Ticket)
.HasForeignKey(t=>t.ActivityID);
试试这个
builder.Entity<Ticket>()
.HasOne(t => t.Activity)
.WithMany(a => a.Ticket)
.HasForeignKey(t => t.ActivityID);
builder.Entity()
.HasOne(t=>t.Activity)
.WithMany(a=>a.Ticket)
.HasForeignKey(t=>t.ActivityID);
my Activity表没有任何导航属性。因此,.WithMany(a=>a.Ticket)
是不可能的。我更改了代码以使其更清晰,可能字符串活动
被视为导航道具。我的活动表没有任何导航属性。因此,.WithMany(a=>a.Ticket)
是不可能的。我更改了代码以使其更清晰,可能字符串活动
被视为导航道具。