2014-11-05 47 views
0

我試圖在流暢的api中用c#開發一個簡單的應用程序。我想插入一張我的Musteri表(Musteri表示土耳其客戶)的記錄。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); 

例如我在TextBox1中寫入「9」。我正在用斷點MusteriRow.MusteriId值觀看。在此之前MusteriRow.MusteriId = 9.

context.SaveChanges()之後命令MusteriRow.MusteriId爲0(零)。總是編程將MusteriRow.MusteriId的值分配給零。我怎麼解決這個問題。請幫幫我。

+0

就可以顯示該對象被添加到上下文有關的代碼,然後context.SaveChanges()被調用?字符串值是否正確保存? – user1666620 2014-11-05 11:48:11

+0

你有任何實體的地圖?你想要的ID是9?它在數據庫中有什麼價值? 'MusteriId'是否自動遞增? – Default 2014-11-05 11:48:17

+0

該ID很可能設置爲從數據庫生成的ID。奇怪的是,你每次都得到0。 – Patrick 2014-11-05 13:39:33

回答

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 2015-06-04 15:19:17