2011-08-31 132 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