我对这个Web API很新,我正在尝试在我的计算机上设置简单的http请求到本地数据库。我有一个看起来像这样的获取请求:
[HttpGet]
[Route("")]
[Route("{ID:int}")]
public IQueryable<ListTable> Get(int id = -1)
{
if(id == -1)
return db.ListTables;
else
return db.ListTables.Where(lt => lt.ID == id);
}
这只返回数据库中的所有项目或与指定ID相关的一个项目。现在我正在尝试发出一个put请求,我可以在其中添加一个新项目到数据库或编辑与某个ID相关的项目。我正在尝试这样的事情:
[HttpPut]
[Route("{ID:int}")]
[Route("{ID:int}/{TITLE:string}")]
[Route("{ID:int}/{TITLE:string}/{DESCRIPTION:string}")]
public ListTable Put(int id = -1, string title = null, string descr = null)
{
//if ID == -1 add a new item to the DB
//else add title and description to the item with the specified ID
}
我不确定如何将新项添加到数据库并保存更改。我尝试了类似db.ListTables.Add(new ListTable())
和db.SaveChanges()
的内容,但实际上并没有保存任何内容,因为当我再次调用Get()
方法时,新项目不存在。
答案 0 :(得分:1)
您需要新建一个实体实例以添加[ListTable
],然后将其添加到您的数据库上下文中(假设它db
基于您的GET
示例。一旦将其添加到上下文中,那么您.SaveChanges()
- 我假设您的ListTable
实体包含名为Title
和Description
的列(更改这些行)无论你把它们命名为什么):
ListTable listTableToAdd = new ListTable()
{
Title = title,
Description = descr
}
db.ListTables.Add(listTableToAdd);
db.SaveChanges();
答案 1 :(得分:0)
您需要在new ListTable()
之后设置属性。像new ListTable() { Title = title, ... }