2017-08-14 36 views
0

再次,令人驚歎的實體框架未能使一些簡單,簡單......我創建了一組非常基本的模型,公司,縣,用戶有一個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; } 
} 
+0

你爲什麼要添加下面的腳本試圖爲應該自動生成的東西設置ID? – Kritner

+0

您正在使用UserID的身份。你是否將其設置爲數據庫中的標識字段? –

+0

因爲把它留空仍然給我錯誤。 –

回答

0

如果你的ID自動通過數據庫生成,嘗試在用戶類

[DatabaseGenerated(DatabaseGeneratedOption.None)

相關問題