Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/fortran/2.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# 独立创建的依赖项(外键约束)_C#_Mysql_Asp.net Mvc_Asp.net Mvc 5_Foreign Keys - Fatal编程技术网

C# 独立创建的依赖项(外键约束)

C# 独立创建的依赖项(外键约束),c#,mysql,asp.net-mvc,asp.net-mvc-5,foreign-keys,C#,Mysql,Asp.net Mvc,Asp.net Mvc 5,Foreign Keys,在我的MVC项目中,我首先使用了代码。我在试图删除所谓的子类中的一个条目时遇到了一个问题,该条目声明外键中存在冲突。但是我没有创建外键列,但是它是由于子类(视图)中的以下行而生成的 public virtual List<TC> TC {get;set;} TC模型类 public int ViewsID {get;set;} /* Some other properties */ public virtual List<TC> TCList {get;set;}

在我的MVC项目中,我首先使用了代码。我在试图删除所谓的子类中的一个条目时遇到了一个问题,该条目声明外键中存在冲突。但是我没有创建外键列,但是它是由于子类(
视图
)中的以下行而生成的

 public virtual List<TC> TC {get;set;}
TC模型类

public int ViewsID {get;set;}
/* Some other properties */

public virtual List<TC> TCList {get;set;} // This particular property was added just to be used as a filter in the View.
public int TCID {get;set;}
/* Some other properties */

public int? Views_ViewsID {get;set;} // This was added to try what I have mentioned above in `What I have tried`
My table for TC也具有上述结构,其中包含列
Views\u ViewsID
作为外键。在我遇到删除
视图的问题之前,我从未在模型类中添加过这个

因此,在我的代码中,该列基本上没有任何用途。仅仅因为我在
视图模型类中有导航属性,我想这个列是自己添加的

现在,当我尝试删除任何视图时,即使在表
TC
中没有相应的条目,删除操作也会抛出上述异常

用于在删除操作方法中设置外键null的代码

    public ActionResult DeleteConfirmed(int id)
    {
        Views views = db.Views.Find(id);
        var tc = db.TC.Where(x => x.Views_ViewsID == id).ToList();
        foreach(var t in tc)
        {
            t.Views_ViewsID = null;
            db.Entry(t).State = EntityState.Modified;
            //db.SaveChanges();
        }
        db.Views.Remove(views);
        db.SaveChanges(); // This line throws the exception
        return RedirectToAction("Index");
    }
电话号码

Views_ViewsID1
强烈建议您在如何设置EF关系方面存在问题

当您通过注释或fluent手动设置关系,但仅将其附加到一端时,通常会出现这种情况。另一端的navigation属性会自动创建要附加到的关系


您需要完全定义关系,或者删除您这样做的尝试。无论哪种方法都应该修复关系以删除重复的密钥。

我对这个问题感到非常困惑。你能提供一个简单的代码示例来解释你想要实现的目标吗?@Coulton:是的,当然。。但我相信,要得到一个最小的代码来重现同样的效果是很困难的。因为问题在于数据库表。但是我可以试着找一个更好的解释酷,我期待着看到update@Coulton:希望现在这个问题能更好地解释这个问题。因为TC型号引用了
ViewsID
,所以它有一个外键。有外键非常有意义,因为如果没有匹配的
视图
视图(u ViewsID
的内容就毫无意义。如果要删除TC记录引用了
View
View
记录,则需要删除TC记录,或者将其
Views\u ViewsID
值设置为null。那么是否有任何方法可以绕过导航属性并删除Views条目?但是我找不到如何将
Views\u ViewsID
的值存储到我已经存在的
TC
表中。如果不修复您定义的关系?我不确定,它可能已经设置为HasOne而不是haseoptional。查看添加ViewID1字段的迁移中的代码。我在迁移中没有任何代码,因为我使用了代码优先迁移。代码优先使用Up和Down方法生成迁移类?它没有任何处理TC的内容。它只有与数据库中另一个表相关的代码,而这在当前上下文中是不相关的。