2014-01-29 29 views
1

我在使用linq代碼執行成功執行表中提交更改時遇到問題,它不保存表中的更改。Linq db.submitchanges()不起作用

有人說你的表必須有主鍵提交更改,但我的表有主鍵。

有些人說使用集成安全=真實的,但它產生的異常無效關鍵字集成安全

這裏是我的連接字符串

<add name="POSConnectionString" connectionString="Persist Security Info=False; Data Source=|DataDirectory|\App_Data\POS.sdf; mode=Read Write;" 
    providerName="Microsoft.SqlServerCe.Client.4.0" /> 

代碼中插入表

public bool InsertItem(Item item) 
{ 
    try 
    { 
     using (SqlCeConnection conn = new SqlCeConnection(connectionString)) 
     { 
      using (POSContext db = new POSContext(conn)) 
      {       
       db.Items.InsertOnSubmit(item); 
       db.SubmitChanges(); 
       return true; 
      } 
     } 
    } 
    catch (Exception ex) 
    { 
     return false; 
    } 

} 

數據這裏是我的桌面腳本

CREATE TABLE [Item] (
    [ItemID] int IDENTITY (1,1) NOT NULL 
, [ItemName] nvarchar(100) NOT NULL 
, [ItemCode] nvarchar(100) NOT NULL 
, [Weight] int NOT NULL 
, [IsActive] bit NOT NULL 
, [Stock] int NULL 
, [UnitID] int NULL 
); 
GO 
ALTER TABLE [Item] ADD CONSTRAINT [PK_Item] PRIMARY KEY ([ItemID]); 
GO 

我在窗口工作形成應用開發 數據庫的SQL Server Compact 4.0數據庫 的Visual Studio 2012

+0

您務必檢查正確的數據庫? –

+0

我該死的。我從表中得到的值完美只插入導致問題,並且只有一個數據庫在我的項目中,因爲我正在使用sql compact數據庫 –

+1

查看您的bin/debug文件夾中的數據庫文件副本 – ErikEJ

回答

1

我改變數據庫屬性不復制解決方案,它的工作原理,因爲它在斌/調試使數據庫的副本,並保存更改有

0

你有你的表自動增量(標識)列。爲了使用Linq插入數據,你的表必須有一個標識列作爲主鍵。

+0

是我具有主鍵和自動增量以及主鍵列 –

+0

嘗試從連接字符串中刪除集成安全性= true。 或通過刪除當前連接再次創建您的連接,並用新的連接字符串替換.. – tarzanbappa

+0

試過但不工作 –

0

我有同樣的問題。所以,當你建立你的項目時,Visual Studio會覆蓋你的數據庫,並且它有默認值。嘗試從項目目錄中的「bin/debug」啓動它。希望它會有所幫助。