所以我仍然被困在我一直在做的审计表里。
这些是我的模型:
public interface Audit {
int AuditById {get;set;}
DateTime AuditOn {get;set;}
User AuditBy {get;set;}
}
User {
Id {get;set;}
Email {get;set;}
Password {get;set;}
}
Profile : Audit {
public int Id {get;set;}
public string Name {get;set;}
public int AuditById {get;set;}
public DateTime AuditOn {get;set;}
public User AuditBy {get;set;}
public User User {get;set;}
}这是在我的dbase上下文中,以确保用户将拥有所需的配置文件,但配置文件没有所需的用户。
Dbase: DbContext{
modelbuilder.Entity<Profile>()
.hasoptional(e => e.User)
.withrequired(u => u.Profile);
}在我的种子上,这是我为我的第一个用户/管理员所做的:
var admin = new User{
Id = 1,
Email = 'email@email.com',
Password = 'woop',
Profile = new Profile {
Name = 'admin name',
AuditById = 1,
AuditOne = DateTime.Now
}
}所以,我得到了一个错误:
“无法确定相关操作的有效排序。由于fk约束、模型需求或存储生成的值,可能存在依赖关系。”
据我所知,AuditById使其成为保存中仍然不存在的1。有办法解决这个问题吗?或者我应该如何对用户和配置文件表建模的任何建议?我需要配置文件存在,即使没有用户,用户不可能没有配置文件。
感谢你的帮助谢谢!
发布于 2012-06-14 16:12:07
先尝试创建配置文件记录,然后在创建用户记录时添加对它的引用。
dbContext.Profiles.Add(new Profile { Id = 1, ... });
var admin = new User{
Id = 1,
Email = 'email@email.com',
Password = 'woop',
ProfileId = 1
}
}
dbContext.Users.Add(admin);
dbContext.SaveChanges();另外,我假设您在问题中包含的代码是psuedo代码,如果不是,您可能遗漏了一些重要的东西(比如导航特性),也许下面的代码会有所帮助:
class User
{
[Key]
protected int Id { get; set; }
[ForeignKey("Profile")]
protected int ProfileId { get; set; }
protected Profile Profile { get; set; }
...
}
class Profile
{
[Key]
protected int Id { get; set; }
[ForeignKey("User")]
protected int? UserId { get; set; }
protected User User { get; set; }
...
}https://stackoverflow.com/questions/11033935
复制相似问题