我正在使用MVC 6和this page上的教程创建一个Web API项目。
我在Models文件夹和Level类中创建了一个User类。它们之间的关系是用户有一个级别,因此级别与许多用户相关(我猜是1到多个)。以下是每个班级的内容:
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请求时得到的结果:
我的模型或逻辑有什么问题?谢谢你的时间。
答案 0 :(得分:1)
选择用户时应包括级别。
Context.Users.Include(x=>x.Level)
答案 1 :(得分:0)
将[ForeignKey(“Level”)]数据注释放在User.levelNumber属性的顶部,并将其从公共虚拟级别级别{get;组; }
应该是:
[Required]
[ForeignKey("Level")]
public int levelNumber { get; set; }
public virtual Level level { get; set; }