【发布时间】:2016-03-25 15:00:42
【问题描述】:
我正在使用 MVC 6 和 this page 上的教程创建一个 Web API 项目。
我在 Models 文件夹中创建了一个 User 类和一个 Level 类。它们之间的关系是一个用户有一个级别,所以这个级别与许多用户相关联(我猜是一对多)。以下是每个类的内容:
public class User
{
[Key]
public string username { get; set; }
//More attributes
[Required]
public int levelNumber { get; set; }
[ForeignKey("levelNumber")]
public virtual Level level { get; set; }
}
public class Level
{
[Key]
public int levelNumber { get; set; }
//More attributes
public virtual ICollection<User> users { get; set; }
}
好的,在为每个类创建存储库和控制器之后,我使用 Fiddler 发布一些请求并提供数据库。我用这个 JSON 创建了一个 id 为 1 的关卡:{"levelNumber":"1", "name":"First Level", "icon":"myicon", "min_score":"0"}。它的创建没有问题。
然后我想创建一个新用户,它应该引用 ID 为 1 的 Level 类,但显然它忽略了它。此外,如果我使用不存在的 levelNumber 创建新用户,它不应该创建用户,因为外键不存在,但它无论如何都会创建用户。我使用这个 JSON 来创建引用级别 1 的用户:
{"username":"myuser", "fbID":"x", "firstname":"Name", "lastname":"Lastname", "gender":"male", "location":"GT", "levelNumber":"1"}。然后我创建一个引用级别 2(不存在)的新用户:{"username":"myuser2", "fbID":"x", "firstname":"Name", "lastname":"Lastname", "gender":"male", "location":"GT", "levelNumber":"2"}。这是我对关卡和用户发出 GET 请求时得到的结果:
我的模型或逻辑有什么问题?感谢您的宝贵时间。
【问题讨论】:
-
你检查过数据库吗?用户表中的列上是否存在外键引用?你确定你没有捕捉和吞下异常吗?
-
如何查看数据库?每当我在 localhost 上运行我的项目时,所有以前的数据都会被删除。此外,当我发布到 Azure 时,所有以前的数据都会被删除。
-
当你创建一个不存在的级别 2 的用户时,它是否也会创建一个键为 2 的新级别对象?
-
你可以运行一次,然后去数据库检查,但是检查架构属性不需要数据。
-
请查看我的更新答案
标签: c# asp.net asp.net-mvc asp.net-web-api asp.net-core-mvc