我想在数据库中添加一个新用户,但例外。不幸的是,我对SQL Server和EF都是陌生的,但是寻找答案使我明白了问题出在SQL Server表中,并且在那里不可能连接用户和公司。我应该用Id
或CompanyId
做些什么吗?
SqlException :INSERT语句与FOREIGN KEY约束“ FK_Users_Companies_CompanyId”冲突。数据库“ companiesdb”的表“ dbo.Companies”的“ Id”列中发生了冲突。该声明已终止。
代码:
public class User
{
public string Name { get; set; }
public int Age { get; set; }
public int CompanyId { get; set; } // for what???
public Company Company { get; set; }
public int Id { get; set; } //for what?
}
public class Company
{
public int Id { get; set; } //for what?
public string Name { get; set; }
public List<User> Users { get; set; }
public Company()
{
Users = new List<User>();
}
}
using Microsoft.EntityFrameworkCore;
namespace DataApp1.Models
{
public class UserDb : DbContext
{
public DbSet<User> Users { get; set; } //create db for users
public DbSet<Company> Companies { get; set; } //and for companies they belong
public UserDb(DbContextOptions<UserDb> options)
: base(options)
{
Database.EnsureCreated();
}
}
}
答案 0 :(得分:1)
您的User类(显然与您的Users表相关)具有CompanyId的字段。根据该错误,您的数据库每次需要将正确的公司ID添加到数据库中。
如果在添加用户之前尚未将公司添加到“公司”表中,则插入将失败,并显示此错误。如果您在CompanyId字段中插入不带值的用户,则会发生此错误。
因此,正确的程序流程为: