首页 > 解决方案 > 实体框架中的单边一对一关系

问题描述

我有两个模型类(TicketsActivities),其中Activities更像是一个查找表,并且不应该包含任何导航属性或其他实体的 FK。

一个记录中Tickets应该有一个Activity,但在整个表中Tickets,会有很多相同的Activities。活动需要是一个表格,而不是(例如)一个枚举,因为将来可能会更新和修正。

尽管这似乎微不足道,但我一直遇到诸如Identity is Set to 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
}

我为Tickets模型指定了域映射:

    builder.HasOne(t => t.Activity)
        .WithMany()
        .HasForeignKey(t => t.ActivityID);

基于此 SO-post 和 blogpost:herehere但我无法正常工作,我最近的错误消息是:

SqlException:当 IDENTITY_INSERT 设置为 OFF 时,无法在表“活动”中插入标识列的显式值。

此外,通过此映射,EF 似乎在 Activity 表中创建了一个 Ticket 列,这是我不想要的。

标签: c#entity-framework-coreone-to-one

解决方案


尝试这个

builder.Entity<Ticket>() 
         .HasOne(t => t.Activity)
        .WithMany(a => a.Ticket)
        .HasForeignKey(t => t.ActivityID);

推荐阅读