修改了 整个帖子。
我正在尝试通过Fiddler发布以下JSON POST请求:
{Username:"Bob", FirstName:"Foo", LastName:"Bar", Password:"123", Headline:"Tuna"}
但是我收到此错误:
Message "Cannot insert the value NULL into column 'Id', table 'xxx_f8dc97e46f8b49c2b825439607e89b59.dbo.User'; column does not allow nulls. INSERT fails.\r\nThe statement has been terminated." string
尽管如果我随请求手动发送一个随机ID,那么一切都很好。像这样:
{Id:"1", Username:"Bob", FirstName:"Foo", LastName:"Bar", Password:"123", Headline:"Tuna"}
为什么实体框架不生成ID并自动递增ID?我的POCO课程如下:
public class User
{
[Key]
[DatabaseGenerated(DatabaseGeneratedOption.Identity)]
public string Id { get; set; }
public string Username { get; set; }
public string FirstName { get; set; }
public string LastName { get; set; }
public string Password { get; set; }
public string Headline { get; set; }
public virtual ICollection<Connection> Connections { get; set; }
public virtual ICollection<Address> Addresses { get; set; }
public virtual ICollection<Phonenumber> Phonenumbers { get; set; }
public virtual ICollection<Email> Emails { get; set; }
public virtual ICollection<Position> Positions { get; set; }
}
public class Connection
{
public string ConnectionId { get; set; }
public int UserId { get; set; }
public virtual User User { get; set; }
}
public class Phonenumber
{
public string Id { get; set; }
public string Number { get; set; }
public int Cycle { get; set; }
public int UserId { get; set; }
public User User { get; set; }
}
这是控制器方法。在调试模式下,我通过Fiddler发送请求时,它在处中断db.SaveChanges();
并给出了上面所看到的错误。
// POST api/xxx/create
[ActionName("create")]
public HttpResponseMessage PostUser(User user)
{
if (ModelState.IsValid)
{
db.Users.Add(user);
db.SaveChanges();
HttpResponseMessage response = Request.CreateResponse(HttpStatusCode.Created, user);
response.Headers.Location = new Uri(Url.Link("DefaultApi", new { id = user.Id }));
return response;
}
else
{
return Request.CreateErrorResponse(HttpStatusCode.BadRequest, ModelState);
}
}
怎么了?
解
将字符串ID改为int并删除数据注释。仍遵循约定将ID重命名为UserId,并在必要时在其他POCO中进行了更改以与更改匹配。
这是一个猜测:)
是因为ID是字符串吗?如果将其更改为int会怎样?
我的意思是:
public int Id { get; set; }
问题内容: 我尝试通过使用实体框架连接MySql数据库,但Visual Studio不想生成* .edmx? 我在db中有1个表, -选择ado.net edm,- 选择从数据库生成 -选择 db-在这里我认为我应该选择表,但是 向导关闭 我尝试使用其他版本的EF,但是仍然无法正常工作。问题是什么? 我的软件: -Windows 7 * 64 -vs 2017社区 -mySql 8.0社区 问题答
实体框架5.0首先使用现有数据库编写代码。使用电动工具对类进行逆向工程。一切都很好。数据库有两个表。一个父母和一个孩子的外键返回到父母ID。ID都是带有自动增量的int。我添加了许多父母记录,现在想将孩子记录添加到特定的父母。我能看到的唯一方法是通过在父母表中搜索名称或其他属性并返回ID来找到适当的父母ID。然后在添加孩子时在外键属性中使用该ID。我不想设置新父母,所以这是将孩子添加到现有父母的唯
问题内容: 我有一个PreparedStatement,例如: 如您所见,Employee表具有一个自动递增的ID。我基本上也需要使用prepareStatement自动添加它。有人可以告诉我我要去哪里哪里并纠正我吗?现在,这只是给我一个与Statement相关的错误。 问题答案: 将该列 完全 放在语句之外。它将由数据库引擎生成。您的查询应为: __ 其次,您必须先执行插入操作,然后再从结果中取
这就是我的处境。 我有一个旧数据库,里面有很多,我的意思是很多数据。然而,我最终创建了一个新的数据库结构,现在我想将数据从旧数据库移到新数据库中。作为一个程序员,我并不热衷于手动完成,这就是为什么我做了一个程序来完成这个任务。
我正在做一个项目,我需要自动创建特定表的历史。我为它使用了注释,但它在表中创建重复数据。由于重复的数据,我正在耗尽空间。甚至Eclipse Link也没有回避我的问题。
从过去6个月开始,我一直使用Selenium WebDriver和TestNG进行web应用程序功能测试。我还使用Apache Ant、Apache Maven和Apache POI库进行项目构建和MS Excel的数据驱动测试。 TestNG为我安排测试和执行测试提供了很好的灵活性。在听众和记者的帮助下,我也能够记录和记录测试事件和结果。 请建议使用selenium和TestNG的任何测试自动化