[英]Code first foreign key conflict
These are my two simplified entities 这些是我的两个简化实体
public class Team
{
public int TeamId { get; set; }
public string Name { get; set; }
public User User { get; set; }
public int UserId { get; set; }
}
Team entity configuration: 团队实体配置:
HasRequired(t => t.User)
.WithOptional(u => u.Team);
The User class : 用户类:
public class User
{
public int UserId { get; set; }
public string Username { get; set; }
public Team Team { get; set; }
public int TeamId { get; set; }
}
I made simple demo console application which inserts user to db then get it's primary key to make sure that foreign key is in databse. 我做了一个简单的演示控制台应用程序,它将用户插入到db然后获取它的主键,以确保外键是数据库。
static void Main(string[] args)
{
var test = new InsertTest();
var userId = test.InsertUser();
test.InsertTeam(userId);
}
public int InsertUser()
{
var user = new User();
user.Username = "test1";
user.Email = "aaa@mail.hr";
user.Name = "test";
user.LastName = "Test";
user.Password = "123";
user.ConfirmPassword = "123";
UnitOfWork.UseRepository.Insert(user);
UnitOfWork.Save();
var userdB = UnitOfWork.UseRepository.Get().Where(u => u.Name == "test").FirstOrDefault();
return userdB.UserId;
}
public void InsertTeam(int userId)
{
var team = new Team();
team.Name = "Test";
team.UserId = userId;
UnitOfWork.TeamRepository.Insert(team);
UnitOfWork.Save();
}
But still I get foreign key conflict while inserting team in database. 但是在数据库中插入团队时我仍然会遇到外键冲突。 Really don't have any idea what to do next 真的不知道接下来该做什么
The exception is: The INSERT statement conflicted with the FOREIGN KEY constraint "FK_dbo.Teams_dbo.Users_TeamId". 例外情况是:INSERT语句与FOREIGN KEY约束“FK_dbo.Teams_dbo.Users_TeamId”冲突。 The conflict occurred in database "Fantasy", table "dbo.Users", column 'UserId'. 冲突发生在数据库“Fantasy”,表“dbo.Users”,列“UserId”中。 The statement has been terminated. 该语句已终止。
change your Team entity configuration to 将您的团队实体配置更改为
HasOptional(c => c.User)
.WithRequired(c => c.Team)
.Map(m => m.MapKey("_field"));
You might also need to change 您可能还需要更改
public User User { get; set; } and
public Team Team { get; set; }
to 至
public virtual User User { get; set; } and
public virtual Team Team { get; set; }
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.