Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/326.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# 使用EntityFramework添加新记录_C#_Asp.net_Asp.net Mvc_Entity Framework - Fatal编程技术网

C# 使用EntityFramework添加新记录

C# 使用EntityFramework添加新记录,c#,asp.net,asp.net-mvc,entity-framework,C#,Asp.net,Asp.net Mvc,Entity Framework,我正在创建一个测试项目,以便学习使用asp.net5和mvc6框架 我决定创建一个简单的网页,每个菜单项都来自数据库。为此,我创建了这样一个模型 namespace TestTemplate.Models { public class SideMenuItem { public int Id { get; set; } public string Level { get; set; } public string Label {

我正在创建一个测试项目,以便学习使用
asp.net5
mvc6
框架

我决定创建一个简单的网页,每个菜单项都来自数据库。为此,我创建了这样一个模型

namespace TestTemplate.Models
{
    public class SideMenuItem
    {
        public int Id { get; set; }

        public string Level { get; set; }

        public string Label { get; set; }

        public string Link { get; set; }
    }
}
在Models文件夹中,我还有一个名为'TestContext.cs'的文件

namespace TestTemplate.Models
{
    public class TestContext : DbContext
    {
        public DbSet<SideMenuItem> SideMenuItems { get; set; }
    }
}
我得到一个错误:

An exception of type 'Microsoft.Data.Entity.DbUpdateException' occurred in EntityFramework.Core.dll but was not handled in user code

Additional information: An error occurred while updating the entries. See the inner exception for details.

-->System.Data.SqlClient.SqlException: Invalid object name 'SideMenuItem'.
此错误发生在
SideMenuController.cs
上,我在尝试发布新项目的部分定义了API:

[HttpPost]
public IActionResult Post([FromBody]SideMenuItem sideMenuItem)
{
    if (sideMenuItem.Id == 0)
    {
        _dbContext.SideMenuItems.Add(sideMenuItem);
        _dbContext.SaveChanges();                        // ERROR HERE.
        return new ObjectResult(sideMenuItem);
    }
    else
    {
        var original = _dbContext.SideMenuItems.FirstOrDefault(m => m.Id == sideMenuItem.Id);
        original.Level = sideMenuItem.Level;
        original.Label = sideMenuItem.Label;
        original.Link = sideMenuItem.Link;
        _dbContext.SaveChanges();
        return new ObjectResult(original);
    }
}
我还应该提到,在运行我使用的应用程序之前

>dnx ef migration add initial
>dnx ef database update
我相信这与我没有正确创建数据库有关。因为我在项目中没有看到任何与数据库或迁移有关的文件夹


为什么它会抱怨
SideMenuItem
无效,我如何解决这个问题?

再次尝试创建数据库后,我注意到我的迁移命令有一个输入错误,因此数据库没有创建

该命令应该是带有s的dnx ef migrations…


可以找到所有命令的良好起点。

内部异常是什么?如果我没有弄错的话,应该是
-->
之后的部分。所有其他输出似乎都不是很有用。请检查您的数据库,它是否包含SideMenuItem表?这个名字和那个一模一样吗?如果上下文类中没有缺少构造函数,那么显示内部异常可能非常有用。公共TestContenxt():base(“TestContext”){}
>dnx ef migration add initial
>dnx ef database update