2014-11-05 4 views
0

Я пытаюсь разработать простое приложение в C# с плавным api. Я хочу вставить запись в таблицу Musteri (Musteri означает Customer на турецком языке).DbContext.SaveChanges() всегда присваивает значение столбца id нулю

Мой musteri класс в ModelRepository.cs:

public class Musteri // It means Customer 
{ 
    [Key] 
    public int MusteriId { get; set; }// It Means CustomerId 
    public string MusteriAdi { get; set; } // It means CustomerName 
} 

следующие коды под Form1.cs:

public class CustomerContext : DbContext 
{ 
    public CustomerContext() 
     : base("MySqlConnString") // I'm using MySql Database 
    { 
    } 

    public DbSet<Musteri> MusteriTb { get; set; } 

    protected override void OnModelCreating(DbModelBuilder modelBuilder) 
    { 
     modelBuilder.Conventions.Remove<PluralizingTableNameConvention>(); 
     base.OnModelCreating(modelBuilder); 
    } 
} 

Я использую следующие коды для вставки записи мой Musteri (Заказчик) таблица

CustomerContext context = new CustomerContext(); 
Musteri MusteriRow = new Musteri(); 
MusteriRow.MusteriId = Convert.ToInt32(TextBox1.Text); 
MusteriRow.MusteriAdi = TexBox2.Text; 
context.MusteriTb.Add(MusteriRow); 

Например, я пишу «9» в TextBox1. Я смотрю с точкой останова MusteriRow.MusteriId. До здесь MusteriRow.MusteriId = 9.

После команды context.SaveChanges() команда MusteriRow.MusteriId равна 0 (ноль). Всегда программа присваивает значение MusteriRow.MusteriId to Zero. Как я могу решить эту проблему. Пожалуйста, помогите мне.

+0

вы можете показать код, когда объект добавляется к контексту, а затем context.SaveChanges() называется ? Правильно ли сохранено строковое значение? – user1666620

+0

Есть ли у вас какие-либо Карты сущностей? Вы хотите, чтобы идентификатор был 9? Какая ценность в базе данных? Автоматически увеличивается размер файла 'MusteriId'? – Default

+0

Идентификатор, скорее всего, установлен на сгенерированный идентификатор из базы данных. Странно, что вы получаете 0 каждый раз. – Patrick

ответ

0

Я решил проблему. Я изменил мой класс модели так:

public class Musteri 
{ 
    [DatabaseGenerated(DatabaseGeneratedOption.None)] 
    public int MusteriId { get; set; } 
    public string MusteriAdi { get; set; } 
} 

Я нашел ответ от этой ссылки: Getting "Cannot insert the value NULL into column" when trying to save with .Add() method using DbContext . Please check my POCO's and save method

+0

Некоторым из нас не разрешено делать это, потому что каждое изменение базы данных перезапишет наш код, когда мы перепроектируем код из db. – obesechicken13