Asp.net web api 防止在POST调用中指定id
我希望通过WebAPI中的POST调用创建EF实体 控制器方法应类似于:Asp.net web api 防止在POST调用中指定id,asp.net-web-api,asp.net-web-api2,Asp.net Web Api,Asp.net Web Api2,我希望通过WebAPI中的POST调用创建EF实体 控制器方法应类似于: [ResponseType(typeof(entity))] public IHttpActionResult Post(entity e) { ... } 其中,实体类包含作为自动递增主键的ID的属性 我不希望使用具有ID属性集的实体对象调用Post方法 有什么方法可以阻止包含主键的创建对象的发布?让我看看我是否正确理解您的意思。。。您想: 向Web API服务发布 传递一个完整的预填充EF实体,不将ID字段作为
[ResponseType(typeof(entity))]
public IHttpActionResult Post(entity e)
{
...
}
其中,实体
类包含作为自动递增主键的ID
的属性
我不希望使用具有ID
属性集的实体对象调用Post
方法
有什么方法可以阻止包含主键的创建对象的发布?让我看看我是否正确理解您的意思。。。您想:
实体
,不将ID字段作为参数,并且实体
如下所示:
public class entity
{
public long ID { get; set; }
public string firstname { get; set; }
public string lastname { get; set; }
}
现在,让我解释一下我看到的选项:
实体
对象如上所述非常简单,那么您可以通过向方法定义中的所有参数添加[FromUri]
属性来传递URI中的firstname
和lastname
参数,并调整客户端代码以将此信息作为URI中的查询字符串传递实体
对象比我上面简单的示例复杂得多,那么您可以创建一个DTO(数据传输对象),其中包含您需要传递到数据库的所有EF模型参数,以创建实体
,但ID
除外,也就是说,在这种情况下,只需firstname
和lastname
,并将其作为([FromBody]
)参数传递给Post
方法,然后调整客户端代码以在请求正文中传递此信息(可能是简单的JSON)然后,您可以只从数据库返回自动递增的ID,而不是返回整个
实体
,因为您已经拥有所有其他信息(因为您已经将其作为参数传递给了服务的Post
方法!)。您想要什么体验?是否要将错误返回给客户端,还是要忽略id属性?我认为错误是可以的。这不是一个普遍的问题吗?如果不常见,我可能做错了什么。我想我不该揭露这门课。