Asp.net web api 未创建Id的Web Api后期插入数据
我正在学习将数据传递到Web API。我创建了一个web Api项目,我正在使用Ado.Net Entities DataModel base On DataBase First方法来完成这个项目,我遇到了如下所述的问题 我创建了一个控制器。Asp.net web api 未创建Id的Web Api后期插入数据,asp.net-web-api,json.net,Asp.net Web Api,Json.net,我正在学习将数据传递到Web API。我创建了一个web Api项目,我正在使用Ado.Net Entities DataModel base On DataBase First方法来完成这个项目,我遇到了如下所述的问题 我创建了一个控制器。 这里我使用[FromBody]来接收JSON数据: public class CustomerController : ApiController { ICustomerRepository repository = new CustomerRep
这里我使用
[FromBody]
来接收JSON数据:
public class CustomerController : ApiController
{
ICustomerRepository repository = new CustomerRepository()
[HttpPost]
public void PostContact([FromBody] Customer contact)
{
repository.Add(contact);
}
...
}
我正在使用存储库模式来处理CRUD。以下是我的课程:
public interface ICustomerRepository
{
IEnumerable<Customer> GetAll();
Customer GetById(int CustId);
int Update(Customer Cust);
void Add(Customer Cust);
void Delete(int CustId);
}
public class CustomerRepository : ICustomerRepository
{
// using Ado.net Entities
MyEntities ctx = new MyEntities();
public void Add(Customer contact)
{
var addedContact = ctx.Customers.Add(contact);
ctx.SaveChanges();
}
...
}
当我对通过SSMS手动插入表中的第一条记录执行GetById
时,我的Web API是正常的。我用Fiddler为第二位客户做测试
Accept: application/json
Content-Type : application/json
{
"CustomerName": "David2",
"CustomerPassword": "12345672",
"CustomerEmailAddr": "123,Motoway ",
"CustomerMobileNo": "968772322",
"CreatedOn": "04/25/2017"
}
CustID
。有一个新行的客户ID为0
该表仅显示不带CustId
(CustId 0
)的其余数据
更新
我已经为CustId
设置了PrimaryKey
,并在属性中设置了这些:
Is Identity: yes,
Identity Increment: 1
Identity Seed: 1
当我执行POST时,会收到以下错误消息:
System.Data.SqlClient.SqlException:当identity_insert设置为OFF时,无法在表“Customers”中插入identity列的显式值
更新:
This is the class name inside the Edmx:
using System;
using System.Collections.Generic;
public partial class Customer
{
public int CustId { get; set; }
public string CustomerName { get; set; }
public string CustomerPassword { get; set; }
public string CustomerEmailAddr { get; set; }
public string CustomerMobileNo { get; set; }
public Nullable<System.DateTime> CreatedOn { get; set; }
}
这是Edmx中的类名:
使用制度;
使用System.Collections.Generic;
公共部分类客户
{
public int CustId{get;set;}
公共字符串CustomerName{get;set;}
公共字符串CustomerPassword{get;set;}
公共字符串CustomerEmailAddr{get;set;}
公共字符串CustomerMobileNo{get;set;}
公共可空CreatedOn{get;set;}
}
CustId是主键还是自动递增?如果没有,则使用自动递增的CustId主键oops。。。。!是我的错。你是对的。我试图设置的是身份,我得到这个消息:保存更改是不允许的。有办法处理吗?发生了一件有趣的事。我删除了表并重新创建了一个。现在,没有插入任何内容!我的代码有问题吗?我已经为CustId设置了primaryKey,并在属性中设置了这些:标识是,标识增量1标识种子1。当我执行帖子的时候。我收到此错误消息:System.Data.SqlClient.SqlException:当identity\u insert设置为OFF时,无法在表“Customers”中为identity列插入显式值。@MilkBottle,因为您的表的主键(CustId)未设置为自动递增。我在SSMS中对CustId执行了此操作:我已为CustId设置了primaryKey,并在属性中设置这些:是标识是,标识增量1标识种子1。请告知这是否是错误的。您好,请您共享保存操作代码,以便我可以看到详细信息和表脚本,以及需要检查它是否正确或可能需要一些更改!当我基于数据库优先方法创建Web api项目时,Ado.net Entities DataModel和EntityFramework v6提供了保存操作。这就是我使用的方法。是的,我知道entity framework具有添加对象的功能,意味着在表中添加新记录,但您是如何保存它的,我想看看如何为同一个表类创建clone或viewmodel,或者直接保存一个类的未来对象?请在问题中提供任何代码,以便我可以准确地帮助您解决问题。请查看更新。类模型在edmx中。亲爱的,我想问的是保存操作,而不是类主体,在保存细节的地方发布api post方法的代码。
This is the class name inside the Edmx:
using System;
using System.Collections.Generic;
public partial class Customer
{
public int CustId { get; set; }
public string CustomerName { get; set; }
public string CustomerPassword { get; set; }
public string CustomerEmailAddr { get; set; }
public string CustomerMobileNo { get; set; }
public Nullable<System.DateTime> CreatedOn { get; set; }
}