主键始终插入零

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数据库,请有人帮忙,谢谢

sst*_*tan 5

您可能正在假设通过添加

[DatabaseGenerated(DatabaseGeneratedOption.Identity)]
Run Code Online (Sandbox Code Playgroud)

...在属性上,它告诉EF自动填充值.但事实并非如此.

实际上是另一种方式.通过使用该属性修饰属性,您告诉EF它不需要验证或担心该值,并且数据库将负责使用自动递增值填充它.

但是,这依赖于您已正确定义数据库表以生成该行为.它不会自动发生.您需要确保您的MySQL表将列正确定义为AUTO_INCREMENT.