这是我第一次在stackoverflow上问一个问题。我已多次搜索这个网站寻找答案,但这是我第一次问自己的问题!希望我能提供足够的信息,以便你们能够理解我的问题。
所以基本上我在sqlserver上的数据库中创建了一个新表。我在实体框架中创建了一个新实体,以便映射到该表。问题是我在这个数据库表的odata控制器中的post方法。这是方法:
[HttpPost]
[ODataRoute("TerminalPersonnelEmails/LoadEmail()")]
[ResponseType(typeof(TerminalPersonnelEmail))]
public async Task<IHttpActionResult> PostAsync(TerminalPersonnelEmail email)
{
if (email == null)
{
throw new ArgumentException("The data entry given is invalid");
}
portalDatabaseContext.TerminalPersonnelEmails.Add(email);
await portalDatabaseContext.SaveChangesAsync();
//return Created(email);
return Ok("test"); //will be replaced once post method is fixed
}
以下是我通过邮递员发送的内容:
{"TerminalEmail" :{
"Id" : 1,
"Name" : "NewEmail",
"Email" : "email@email.com",
"TerminalNumber" : 23084093284 } }
(很抱歉奇怪的缩进/括号的位置。当我粘贴在代码中时,1或2个缩进被关闭,我的邮递员代码搞砸了所以我尽可能地修复它以使其进入代码块框)。
我尝试了几种方法来发送这些数据。我试过发送数据而不将其聚集到“TerminalEmail”中,而不是发送Id,因为它是数据库中的autonum,而且我已经搞乱了内容类型(json,text等)。这些都没有奏效。
我确保数据与对象匹配,以便它应该将有效对象传递给c#方法,但它仍然是null。我已经厌倦了所有的选择,需要你的帮助。谢谢!
编辑:这是在entityframework中按要求声明的terminalpersonnelemail类:
using System;
using System.Collections.Generic;
using System.ComponentModel.DataAnnotations;
using System.ComponentModel.DataAnnotations.Schema;
namespace Marketing.EntityFramework.Portal
{
[Table("TerminalPersonnelEmails", Schema = "Portal")]
public class TerminalPersonnelEmail
{
[Key]
[DatabaseGenerated(DatabaseGeneratedOption.Identity)]
public int Id { get; set; }
[Required, MaxLength(50)]
public string Name { get; set; }
[Required, MaxLength(50)]
public string Email { get; set; }
[Required]
public int TerminalNumber { get; set; }
}
}
答案 0 :(得分:0)
好的,所以我发现了如何解决它,但我无法告诉你为什么这样做。我取出了odata路线,在我的odata配置中取出了除了我创建的实体集之外的所有内容。这是工作代码:
[HttpPost]
[ResponseType(typeof(TerminalPersonnelEmail))]
public async Task<IHttpActionResult> Post(TerminalPersonnelEmail email)
{
if (!ModelState.IsValid)
{
return BadRequest(ModelState);
}
if (email == null)
{
throw new ArgumentException("The data entry given is invalid");
}
portalDatabaseContext.TerminalPersonnelEmails.Add(email);
await portalDatabaseContext.SaveChangesAsync();
return Created(email);