【发布时间】:2015-08-29 00:10:58
【问题描述】:
我有以下实体:
public class ApplicationUser : IdentityUser
{
...
public int? StudentId { get; set; }
public virtual Student Student { get; set; }
}
public class Student
{
public int Id { get; set; }
public string UserId { get; set; }
public virtual ApplicationUser User { get; set; }
}
我正在尝试创建一个新的应用程序用户和学生,所以我这样做:
var user = new ApplicationUser() {
Name = "test",
UserName = "test",
Student = new Student ()
};
var result = await userManager.CreateAsync(user, "test12345!");
结果为成功,两个实体都插入数据库,但Student.UserId为空
如何插入两个实体及其关系?
我尝试设置 student.UserId = user.Id,但随后我收到一条异常消息:“无法确定相关操作的有效排序”
【问题讨论】:
-
这些是如何映射的? Student.UserId 不能与 User.Id 相同(我假设),因为 UserId 是字符串类型,并且当 Id 是数据库生成时,它必须是数值。编辑:当 user.Id 确实是一个字符串值时,可以使用 HasOptional().WithOptionalDependant() 修复出现的错误
-
是的,Student.UserId和User.Id一样,ApplicationUser继承自IdentityUser,IdentityUser默认有字符串Id
-
另外,模型创建正确,在数据库中我有正确的外键,只是没有设置值
标签: c# entity-framework asp.net-web-api asp.net-identity asp.net-identity-2