再次,令人驚歎的實體框架未能使一些簡單,簡單......我創建了一組非常基本的模型,公司,縣,用戶有一個M:1的關係與公司。所以我創建了一個名爲CompanyUsers的額外表格,我相信它會生成我喜歡的表格設計。實體框架的列不允許爲空'
但是現在我無法在數據庫中輸入一個基本用戶,聲稱我不能有一個空的UserId,即使我設置了Id。
我知道我的桌子設計很奇怪,但我最終可能想切換到M:M關係,並且讓這個桌子設置很好。其次,使用3個表中的數據使得由於聯接而編寫SQL查詢變得更容易。
確切的錯誤:
System.Data.SqlClient.SqlException: Cannot insert the value NULL into column 'UserId', table 'SSI.Database.Context.Software.dbo.Users'; column does not allow nulls. INSERT fails.
種子:
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; }
}
CompanyUser表:
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; }
}
你爲什麼要添加下面的腳本試圖爲應該自動生成的東西設置ID? – Kritner
您正在使用UserID的身份。你是否將其設置爲數據庫中的標識字段? –
因爲把它留空仍然給我錯誤。 –