2014-09-28 21 views
0

我想將這些信息添加到我的數據庫中。我的SQL Server將爲表中的每一行生成Id。但是,由於某種原因,我的代碼爲Id添加了一個「0」,我無法弄清楚它爲什麼或來自哪裏,我需要將其刪除,以便數據庫可以生成它。C#試圖將項目添加到數據庫中,出現錯誤

這裏是我的代碼:

public class Contact 
{ 
    public Contact() 
    { 

    } 

    [DatabaseGenerated(DatabaseGeneratedOption.None)] 
    public int Id { get; set; } 

    [Required] 
    [StringLength(50)] 
    public string Name { get; set; } 

    [Required] 
    [StringLength(50)] 
    public string Email { get; set; } 

    [Column(TypeName = "ntext")] 
    [Required] 
    public string Message { get; set; } 

    [Column(TypeName = "date")] 
    [Required] 
    public DateTime Date { get; set; } 

    [Column(TypeName = "time")] 
    [Required] 
    public TimeSpan Time { get; set; } 
} 


public class Context : DbContext 
{ 
    public Context() 
     : base("ContactConnectionString") 
    { 

    } 
    public DbSet<Contact> ContactForm { get; set; } 
} 


public class ImportToDataBase 
{ 


    public static void SubmitToDatabase(string theMessage, string fullName, string emailAddress) 
    { 




     using (var db = new Context()) 
     { 
      var contact = new Contact() 
      { 
       Email = emailAddress, 
       Message = theMessage, 
       Name = fullName, 
       Date = DateTime.Now.Date, 
       Time = DateTime.Now.TimeOfDay, 
       // ID is not set in here 
      }; 
      db.ContactForm.Add(contact); 
      db.SaveChanges(); 
     } 


    } 
} 
} 

回答

1

嘗試用裝飾你的Id屬性如下:

[Key, DatabaseGenerated(DatabaseGeneratedOption.Identity)]

Key屬性告訴實體框架是Id屬性是主鍵和應不包括在插入語句中。

+0

我試圖這樣做,但是當我切換到身份,而不是.None我得到這個錯誤。 「此版本的SQL Server不支持沒有聚簇索引的表,請創建聚簇索引並重試 無法刪除約束,請參閱前面的錯誤 該語句已被終止。 – electrometro 2014-09-28 01:26:04

+0

@ user2958455您使用的是Azure嗎? – codebased 2014-09-28 01:28:06

+0

是的,我正在使用Azure。 – electrometro 2014-09-28 01:29:06

0

作爲一種最佳實踐,您需要使用密鑰和身份選項來標記您的ID。

[Key] 
[DatabaseGenerated(DatabaseGeneratedOption.Identity)] 
public int Id { get; set; } 

對於流利的API,你可以使用如:

HasKey(i => i.ID); 
Property(i => i.ID).HasDatabaseGeneratedOption(DatabaseGeneratedOption.Identity); 
相關問題