Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/entity-framework/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 实体框架&x27;列不允许空值';_C#_Entity Framework - Fatal编程技术网

C# 实体框架&x27;列不允许空值';

C# 实体框架&x27;列不允许空值';,c#,entity-framework,C#,Entity Framework,然而,令人惊叹的实体框架再次未能使某些东西变得简单、简单。。。我已经创建了一套非常基本的模型,公司、县、用户与公司的关系是M:1。因此,我创建了一个额外的表,名为CompanyUsers,我相信它将生成我喜欢的表设计 但是,现在我不能在数据库中输入一个基本用户,声称我不能有一个空的UserId,即使我正在设置Id 我知道我的表设计很奇怪,但我可能最终会想切换到M:M关系,因此设置这个表很好。其次,将数据放在3个表中可以使编写SQL查询更容易,因为有了连接 确切错误: System.Data.Sq

然而,令人惊叹的实体框架再次未能使某些东西变得简单、简单。。。我已经创建了一套非常基本的模型,公司、县、用户与公司的关系是M:1。因此,我创建了一个额外的表,名为CompanyUsers,我相信它将生成我喜欢的表设计

但是,现在我不能在数据库中输入一个基本用户,声称我不能有一个空的UserId,即使我正在设置Id

我知道我的表设计很奇怪,但我可能最终会想切换到M:M关系,因此设置这个表很好。其次,将数据放在3个表中可以使编写SQL查询更容易,因为有了连接

确切错误:

System.Data.SqlClient.SqlException:无法将值NULL插入到 列“UserId”,表“SSI.Database.Context.Software.dbo.Users”; 列不允许空值。插入失败

种子:


如果您的id是由数据库自动生成的,请尝试在用户类中添加下面的脚本


[DatabaseGenerated(DatabaseGeneratedOption.None)]

为什么要为应该自动生成的内容设置ID?您使用的是用户ID的标识。您是否已将其设置为DB中的标识字段?因为保留为空仍然会导致错误。如果必须进行粗略猜测,则问题是由于创建CompanyUsers表引起的。@BaileyMiller您的猜测是正确的:)那么,为什么除了您已有的一对多表之外,还需要新的多对多表呢?您不应该准备切换-现在就决定,如果需要,以后再迁移。两者兼而有之只会带来问题。
var _company = new Company() 
{
    CompanyId=1,
    Name="Company Inc."
};

var _counties = new List<County>() {
    new County(){ Name="Place1" },
    new County(){ Name="Place2"}
};

context.Companies.AddOrUpdate(_company);

var _user = new User() {UserId=1, CompanyId=_company.CompanyId, Company=_company, Name = "John Smith" };


if (context.Counties.Count() == 0)
{
    context.Counties.AddRange(_counties);
}

context.Users.AddOrUpdate(_user);
public class Company
{

    public Company()
    {
        Users = new List<User>();
    }

    [Key]
    public int CompanyId { get; set; }
    public string Name { get; set; }

    public ICollection<User> Users { get; set; }
}
public class User
{
    [Key]
    [DatabaseGenerated(DatabaseGeneratedOption.Identity)]
    public int UserId { get; set; }
    public string Name { get; set; }


    public Nullable<int> CompanyId { get; set; }

    [ForeignKey("CompanyId")]
    public Company Company { get; set; }
}
public class CompanyUsers
{
    [Key]
    [Column(Order = 1)]
    public int CompanyId { get; set; }
    [ForeignKey("CompanyId")]
    public virtual Company Company { get; set; }
    [Key]
    [Column(Order = 2)]
    public int UserId { get; set; }
    [ForeignKey("UserId")]
    public virtual User User{ get; set; }
}