2010-03-18 140 views
1

我在這裏有一點點/奇怪的行爲,我在網上查找,所以我沒有找到答案。Linq to SQL沒有將數據插入到數據庫

我不得不承認,這是我第一次使用數據庫,我知道如何使用它們與SQL,但從來沒有實際使用它。

無論如何,我的應用程序插入數據時遇到了問題,我只是創建了一個非常簡單的項目,用於測試並且沒有解決方案。

我與SQL Server的實例數據庫

標識 - INT(標識主鍵) 名稱 - 的nchar(10)(NOT NULL)

的表稱爲 「人」,就這麼簡單餡餅。

我有這樣的:

static void Main(string[] args) 
{ 
    var db = new ExampleDBDataContext {Log = Console.Out}; 

    var jesus = new Person {Name = "Jesus"}; 

    db.Persons.InsertOnSubmit(jesus); 
    db.SubmitChanges(); 

    var query = from person in db.Persons select person; 

    foreach (var p in query) 
    { 
     Console.WriteLine(p.Name); 
    } 
} 

正如你所看到的,沒有什麼交流中心。

它在控制檯顯示耶穌。但是如果你看到表格數據,就沒有數據,只是空的。我評論對象的創建和插入和foreach不打印的東西(正常,沒有數據庫中的數據)

奇怪的是我手動創建了一個數據庫中的行,ID是2和1號(是真的LINQ與數據庫玩,但它沒有創建行?)

有日誌:

INSERT INTO [DBO] .Person

VALUES(@ p0)

SELECT CONVERT(Int,SCOPE_IDENTITY())AS [value]

- @ p0:Input NChar(Size = 10; Prec = 0;標度= 0)[耶穌]

- 上下文:sqlProvider的(SQL2005)型號:AttributedMetaModel體形:3.5.30729.4926

SELECT [T0] [ID],[T 0] [姓名] FROM [。 DBO] [人] AS [T 0]

- 語境:sqlProvider的(SQL2005)型號:AttributedMetaModel體形:3.5.30729.4926

我真的很困惑,所有的博客/書籍都使用這種片段將元素插入數據庫。

謝謝你的幫助。

+0

WAG - 您有兩個數據庫實例,一個是L2S正在與之交互,另一個是您手動創建數據庫行。 – Will 2010-03-18 16:22:28

+0

Heve您打開了一個事務嗎? – Gregoire 2010-03-18 16:23:18

+0

當您查看設計器中的Person類時,標識列是否顯示爲自動生成的值? – tvanfosson 2010-03-18 16:23:37

回答

4

首先;你有一個TransactionScope跨越這個,你還沒有承諾。

但是,更類似的是:這是一個數據庫文件你要與系統部署(而不是單獨的數據庫服務器)?如果是這樣,每次你點擊「構建」等,它將你的解決方案文件夾中的版本複製到構建輸出(bin/debug或bin/release)中。

查看構建輸出副本;看看是否已更新。

+0

如果您正在使用SQLExpress「用戶實例」數據庫,這尤其可能。 – pblasucci 2010-03-18 16:29:54

+0

你是唯一。正如我所說的,我在課程中使用了oracle和mysql,但是我對Sql Server所提供的所有選項(mdf,sdf和服務器內部的一個選項我都認爲)感到困惑,因爲我想用一些嵌入式SQL服務器DB支持LINQ。我認爲我必須打開並使用bin內部的lib,這很奇怪,但它是解決方案。謝謝。 – 2010-03-18 16:43:13

相關問題