2011-08-31 93 views
0

我寫了一個樣品與C#但是當我使用相對的ConnectionString它不保存數據到數據庫和犯規進行任何異常或錯誤,甚至:的ConnectionString在LinqToSQL

private void AddButton_Click(object sender, EventArgs e) 
{ 
    using (DataBaseModelDataContext DB = new DataBaseModelDataContext(@"Data Source=.\SQLEXPRESS;AttachDbFilename=|DataDirectory|\DataBase.mdf;Integrated Security=True;User Instance=True")) 
    { 
     Person person = new Person { Name=NameField.Text,LastName=LastNameField.Text}; 
     DB.Persons.InsertOnSubmit(person); 
     DB.SubmitChanges(); 
     MessageBox.Show("Add successfully"); 
    } 
} 

但是,當我更改連接字符串,它的工作原理:

using (DataBaseDataContext DB = new DataBaseDataContext(@"Data Source=.\SQLEXPRESS;AttachDbFilename=C:\Users\Herald\Documents\Visual Studio 2010\Projects\LinqToSql\LinqToSql\DataBase.mdf;Integrated Security=True;Connect Timeout=30;User Instance=True") 

,但我需要使用相對連接字符串我應該怎麼辦:

+1

您確定您正在檢查相同的數據庫以查看添加記錄的位置嗎?你的兩個連接字符串看起來都是有效的,但要記住兩條路徑不一樣。 –

+1

當您構建解決方案/項目時,您的數據庫可能會被覆蓋。 – leppie

+0

你是否絕對確信*它不會保存,然後在下次部署時覆蓋它?如果您立即*使用具有相同連接字符串的新DataBaseModelDataContext並獲取'.Persons',會發生什麼? - 它在那裏嗎? –

回答

1

你需要獲得當前目錄下,並將其映射到字符串。

path = New Uri(Assembly.GetExecutingAssembly().CodeBase).LocalPath; 
path = IO.Path.GetDirectoryName(path); 
+1

不是真的他的問題的解決方案... –

+0

我認爲這個解決方案有額外的工作,我認爲有一個簡單的解決方案! – Rasoul