2014-09-28 18 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); 
相关问题