使用实体框架添加新记录
本文关键字:添加 新记录 框架 实体 | 更新日期: 2023-09-27 18:35:24
我正在创建一个测试项目,以便使用asp.net 5
和mvc 6
框架进行学习。
我决定创建一个简单的网页,每个菜单项都来自数据库。为此,我创建了一个这样的模型
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; }
}
}
在我的模型文件夹中,我还有一个名为"TestContext.cs"的文件
namespace TestTemplate.Models
{
public class TestContext : DbContext
{
public DbSet<SideMenuItem> SideMenuItems { get; set; }
}
}
那是我EntityFramework DbContext
课。
当尝试通过使用带有表单的简单视图来添加新的SideMenu
项以添加所有需要的数据时,请使用如下所示的角度工厂
return $resource('/api/sidemenu/:id');
我收到错误:
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'.
此错误发生在我在尝试发布新项目的部分定义 API 的SideMenuController.cs
:
[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 ...
。
可以在此处找到所有命令的良好起点。