相关疑难解决方法(0)

首先了解实体框架代码中的ForeignKey属性

有关背景信息,请参阅以下帖子:

实体框架一到零或一个没有导航属性的关系

我一直认为这ForeignKey用于显示类中哪个属性持有确定导航属性的ForeignKey,例如

public class MemberDataSet
{
    [Key]
    [DatabaseGeneratedAttribute(DatabaseGeneratedOption.Identity)]
    public int Id { get; set; }

    public int? DeferredDataId { get; set; }
    [ForeignKey("DeferredDataId")]
    public virtual DeferredData DeferredData { get; set; }
}
Run Code Online (Sandbox Code Playgroud)

但是,我在链接的帖子上发现这是不对的,因为DeferredData的主键被称为Id我实际需要:

public class MemberDataSet
{
    [Key]
    [DatabaseGeneratedAttribute(DatabaseGeneratedOption.Identity)]
    public int Id { get; set; }

    public int? DeferredDataId { get; set; }
    [ForeignKey("Id")]
    public virtual DeferredData DeferredData { get; set; }
}
Run Code Online (Sandbox Code Playgroud)

ForeignKey用于指向其他类.

然后我继续改变其他一些参考文献:

public class MemberDataSet
{
    [Key]
    [DatabaseGeneratedAttribute(DatabaseGeneratedOption.Identity)]
    public int Id { …
Run Code Online (Sandbox Code Playgroud)

c# entity-framework foreign-keys code-first shared-primary-key

26
推荐指数
1
解决办法
7万
查看次数

如何以一对一/零关系指定外键?

我有一个父实体和一个子实体。

在数据库中,父级的主键是p_p_id ,子级中的外键是相同的p_p_id

数据库中没有外键约束。

实体具有在各自的类中设置的指向彼此的属性。

家长班

public virtual ChildProject ThisChildProject { get; set; }
Run Code Online (Sandbox Code Playgroud)

儿童班

public virtual ParentProject ThisParentProjection { get; set; }
Run Code Online (Sandbox Code Playgroud)

这些属性或任何一个类的Id上都没有注释。

在配置中,我尝试在子级中进行映射。

HasRequired(i => i.ThisParentProject).WithOptional(o => o.ThisChildProject );
Run Code Online (Sandbox Code Playgroud)

发生的情况是EF尝试使用子级的主键和父级的主键进行映射。

但是我想在子级和父级的主键中使用定义的FK

c# entity-framework ef-fluent-api

6
推荐指数
1
解决办法
4780
查看次数