2016-04-28 62 views
0

我有一個名爲在基於服務的數據庫類非常基本的表,看起來像這樣:服務基於數據庫和LINQ to SQL中,插入新行

類別ID:主鍵,身份

類別名稱:只是一個nvarchar(max)列

我添加了一個LINQ到SQL類項目,和我的窗體的構造函數之前初始化權它:

DataClasses1DataContext dc = new DataClasses1DataContext(); 

現在我只是想做一些簡單的事情:添加一個新的行到類別表。 我曾嘗試這樣的:

var c = new Category() 
{ 
    CategoryName = "test" 
}; 
dc.Categories.InsertOnSubmit(c); 
dc.SubmitChanges(); 

我與類別ID = 4試了兩個,沒有它(4將是下一個可用的ID)。

我也設置數據庫的副本輸出目錄屬性複製,如果更新。我甚至嘗試從CategoryID中移除標識(儘管這不應該是一個好的解決方案),但是後來我得到了一個異常,即CategoryID不應該爲null(即使將其設置爲4)。

(我沒有使用實體框架)。

+0

是CategoryID設置爲主鍵並設置爲在您的數據庫中自動增量?你有錯誤嗎?如果是這樣請提供。你可以把db.SubmitChanges放到try catch中,如果你沒有收到錯誤... – Waragi

+0

嘗試dc.Categories.Add(c); dc.SaveChanges(); – techspider

+0

你可以粘貼你的EF生成的Category類;我認爲它不攜帶數據庫的身份信息 – techspider

回答

0

發現問題(有點)。該代碼與Visual Studio 2013完美兼容,因此我相當確定VS2015存在這個問題。

+0

這不能是Visual Studio版本的問題。恐怕你搞砸了連接字符串爲例,並在不同的數據庫中保存新的行,然後在檢查結果的數據庫中保存新的行 – Fabio

+0

我使用VS爲基於服務的數據庫生成的相同連接字符串。 – hungariandude

1

我想我找到了一個在Visual Studio 2015中可用的解決方案。 轉到您的服務器資源管理器並打開.mdf的屬性。複製連接字符串並將其粘貼到右括號中,並將其放在逐字串字符串(@「」)中,並刪除裏面的所有引號(如果有的話)。

DataClasses1DataContext dc = new DataClasses1DataContext(@"Data Source=(LocalDB)\MSSQLLocalDB;AttachDbFilename=C:\FilePathHere\Database.mdf;Integrated Security=True");