然而,令人惊奇的实体框架却未能简化,简单......我创建了一套非常基本的模型,公司,郡,用户与公司有M:1的关系。所以我创建了一个名为CompanyUsers的额外表,我相信它会生成我喜欢的表设计。
但是现在我无法在数据库中输入一个基本用户,声称即使我设置了Id,我也不能拥有null UserId。
我知道我的桌面设计很奇怪,但我最终可能想要切换到M:M关系,并且让这个桌面设置很好。其次,将数据放在3个表中可以使连接时更容易编写SQL查询。
确切错误:
System.Data.SqlClient.SqlException:无法将值NULL插入 列' UserId',表' SSI.Database.Context.Software.dbo.Users&#39 ;; 列不允许空值。 INSERT失败。
种子:
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; }
}
答案 0 :(得分:1)
如果您的ID是由数据库自动生成的,请尝试在用户类
中添加以下脚本[DatabaseGenerated(DatabaseGeneratedOption.None)]