Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/25.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 在Entity Framework 6的孙子表中自动设置外键_C#_.net_Asp.net Mvc_Entity Framework_Entity Framework 6 - Fatal编程技术网

C# 在Entity Framework 6的孙子表中自动设置外键

C# 在Entity Framework 6的孙子表中自动设置外键,c#,.net,asp.net-mvc,entity-framework,entity-framework-6,C#,.net,Asp.net Mvc,Entity Framework,Entity Framework 6,假设我有以下对象 public class MyParent { public long Id { get; set; } public string Name { get; set; } } public class MyChild { public long ParentId; public virtual Parent Parent; public long Id { get; set; } public string Name { get

假设我有以下对象

public class MyParent {
    public long Id { get; set; }
    public string Name { get; set; }
}

public class MyChild {
    public long ParentId;
    public virtual Parent Parent;
    public long Id { get; set; }
    public string Name { get; set; }
}

public class MyGrandChild{
    public long ParentChildId;
    public virtual MyChild ParentChild;
    public long Id { get; set; }
    public string Name { get; set; }
}
现在MyParent是顶级对象,是MyChild的子对象,MyChild是My孙子的子对象

在创建的表中,我得到

MyParent
--Id
--Name

MyChild
-- ParentId
-- Id
-- Name

MyGrandChild
-- ParentChildId
-- Id
-- Name
现在,在My孙子表中有MyParent的外键将非常有用

我已尝试将My孙子对象更改为此

public class MyGrandChild{
    public long ParentId;
    public virtual MyParent Parent;
    public long ParentChildId;
    public virtual MyChild ParentChild;
    public long Id { get; set; }
    public string Name { get; set; }
}
但是cascase delting出现了一个错误,我不得不添加以下fluentAPI

modelBuilder<MyGrandChild>()    
    .HasRequired(e => e.Parent)
    .WithMany()
    .HasForeignKey(e => e.ParentId)
    .WillCascadeOnDelete(false);
modelBuilder()
.has必需(e=>e.Parent)
.有很多
.HasForeignKey(e=>e.ParentId)
.WillCascadeOnDelete(假);
现在可以了,但它迫使我必须手动设置my孙子的.Parent属性


有没有一种方法可以告诉entity framework我想存储一个父-父外键并手动设置它?

当您说“现在,将MyParent的外键放在My孙子表中会非常有用”时,您的意思是什么?为什么它会有用?当您需要该属性时,您是否可以只转到My孙子女.Parent.Id?您已经创建了一个全新的不相关关系,没有任何东西可以将
My孙子女.Parent
约束到与
My孙子女.ParentChild.Parent
相同的实体。但是,我根本看不到此属性的值,您可以访问
my孙子.ParentChild.Parent