gpt4 book ai didi

C# 关系型数据库

转载 作者:太空宇宙 更新时间:2023-11-03 12:04:02 27 4
gpt4 key购买 nike

我有一个关系表,其中连接在用户和注释之间。我的问题

  1. _result.Entity.Id 返回 -2147482647

  2. 我使用Email作为key,但是当创建多个note时出现错误提示我已经在数据库中有这样的Email,我想听听解决这个问题的方法。

  3. 我的任务是匹配两个表中的id注释,但是在通信表中id等于(见1)

[HttpPost]
public async Task<IActionResult> Create(AddToDoViewModel model)
{
if (ModelState.IsValid)
{
ToDo toDo = new ToDo {Name = model.Tittle, Body = model.Body };
var _result = await db.ToDos.AddAsync(toDo);

UserToDo userToDo = new UserToDo { ToDoId = _result.Entity.Id, UserEmail = User.Identity.Name};
var result = await db.UserToDos.AddAsync(userToDo);

db.SaveChanges();

return Redirect("/Profile");
}

return View(model);
}

public class ToDo
{
[Key]
[DatabaseGenerated(DatabaseGeneratedOption.Identity)]
public int Id { get; set; }
public string Name { get; set; }
public string Body { get; set; }
}

public class UserToDo
{
[Key]
public string UserEmail { get; set; }
public int ToDoId { get; set; }
}

如果有任何帮助,我将不胜感激

最佳答案

您的 key 是由数据库生成的,因此您必须让数据库有机会这样做:

var _result = await db.ToDos.AddAsync(toDo);
db.SaveChanges(); // this generates and fetches the new key
UserToDo userToDo = new UserToDo { ToDoId = _result.Entity.Id, UserEmail = User.Identity.Name};

然后您仍然需要第二次 SaveChanges。查看导航属性以获得更好的方法。

在 UserToDo 中只有 UserEmail 作为键,每个用户(电子邮件)在您的数据库中只能有 1 个 ToDO 项目。

public class UserToDo
{
[Key]
public string UserEmail { get; set; }
[Key] // add this to create a composite key
public int ToDoId { get; set; }
}

关于C# 关系型数据库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55888309/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com