dee*_*een 0 c# mysql entity-framework primary-key
我刚开始学习实体框架,我正在尝试将数据插入数据库.我有Customer表,它有三个字段id(int),name(varchar)和address(varchar).当我每次插入ID作为0值时,我试图将数据插入数据库.
我的客户类 -
[Table("customer")]
public class Customer
{
[Key]
[Column("custId")]
[DatabaseGenerated(DatabaseGeneratedOption.Identity)]
public int custId { get; set; }
public string name { get; set; }
public string address { get; set; }
}
Run Code Online (Sandbox Code Playgroud)
和我的插入方法 -
static void insertCustomer(Customer cust)
{
using(var context = new DBEntities())
{
Console.WriteLine("ID: " + cust.custId);
context.customer.Add(cust);
context.SaveChanges();
Console.WriteLine("Customer Inserted Successfully!!!");
}
}
Run Code Online (Sandbox Code Playgroud)
我正在调用这样的Insert方法
Customer cust = new Customer();
cust.custId = 106;
cust.name = "Prince";
cust.address = "Kolkata";
insertCustomer(cust);
Run Code Online (Sandbox Code Playgroud)
我正在使用MySql数据库,请有人帮忙,谢谢
您可能正在假设通过添加
[DatabaseGenerated(DatabaseGeneratedOption.Identity)]
Run Code Online (Sandbox Code Playgroud)
...在属性上,它告诉EF自动填充值.但事实并非如此.
实际上是另一种方式.通过使用该属性修饰属性,您告诉EF它不需要验证或担心该值,并且数据库将负责使用自动递增值填充它.
但是,这依赖于您已正确定义数据库表以生成该行为.它不会自动发生.您需要确保您的MySQL表将列正确定义为AUTO_INCREMENT.