我正在尝试将此信息添加到我的数据库中。我的SQL Server将为表中的每一行生成Id。但是,出于某种原因,我的代码为Id添加了一个“0”,我无法弄清楚它来自何处或来源,我需要将其删除,以便数据库可以生成它。
这是我的代码:
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();
}
}
}
}
答案 0 :(得分:1)
尝试使用以下内容装饰您的Id
媒体资源:
[Key, DatabaseGenerated(DatabaseGeneratedOption.Identity)]
Key
属性告诉Entity Framework Id属性是主键,不应包含在insert语句中。
答案 1 :(得分:0)
作为最佳做法,您需要使用密钥和身份选项标记您的ID。
[Key]
[DatabaseGenerated(DatabaseGeneratedOption.Identity)]
public int Id { get; set; }
对于流畅的API,您可以使用:
HasKey(i => i.ID);
Property(i => i.ID).HasDatabaseGeneratedOption(DatabaseGeneratedOption.Identity);