在C#中我添加了一个“基于服务的数据库”文件,叫DB1.mdf,做了一个表,字段Id是主键自增int型,字段name是 nvarchar(50)。手工输入了三条非空记录, 然后添加了一个数据集,再把表拖到数据集中自动生成类,接着写代码,更改表中字段值,最后用Update指命更新强类型Dataset到数据库,可是发现,他并没有更新“服务器资源管理器中的DB1.mdf文件,而是在本应用程序的/bin/debug下生成了一个新的DB1.mdf,运行中以为是更新了服务器,其实没有,每次重新编译后就还是使用的末更新的服务器数据库,一动表记录就在写本地DB1.mdf。头大了,代码如下。namespace 强类型DataSet1
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }        private void button1_Click(object sender, EventArgs e)
        {
            //强类型Dataset制动生成的类
            //表名+TableAdapter,表名+DataTable,表名+Row,然后用"解析"来填充类名。
                        
           T_PersonsTableAdapter adapter = new T_PersonsTableAdapter();
            强类型DataSet1.DataSetPersons.T_PersonsDataTable personsTable = adapter.GetData();
            personsTable[0].Name = "ccc1";
            personsTable[1].Name = "aaa";
            personsTable[2].Name = "bbb";
            //强类型DataSet无需下面这条
            //SqlCommandBuilder builder = new SqlCommandBuilder(adapter);
            
            adapter.Update(personsTable);//无法更新服务器的数据库
        }        private void button2_Click(object sender, EventArgs e)
        {
            T_PersonsTableAdapter adapter = new T_PersonsTableAdapter();
            adapter.Insert("john", 50);、、         
        }
    }
}

解决方案 »

  1.   

    不存在连接问题,表放到数据集中会自动生成配置文件型的连接字串,以及 强类型Dataset类名,查询服务器数据库依然正常,说明我的连接无问题,只是在修改字段值的时候 只修改了本地/bin/debug/DB1.dbf 而服务器的DB1.dbf没变。
      

  2.   

    呵呵,刚刚遇到这个为题:
    我的也是 adapter.Update(personsTable),没法更新数据库。
    解决办法如下:
    在Program.cs 中的static void Main()里加如下代码,即可解决,注意加在Application.EnableVisualStyles();前面:string dataDir = AppDomain.CurrentDomain.BaseDirectory;
                if (dataDir.EndsWith(@"\bin\Debug\")
                    || dataDir.EndsWith(@"\bin\Release\"))
                {
                    dataDir = System.IO.Directory.GetParent(dataDir).Parent.Parent.FullName;
                    AppDomain.CurrentDomain.SetData("DataDirectory", dataDir);
                }
      

  3.   

    把 数据库档案的属性选项,改成 Copy if newer 就只会在你有异动数据库时才会盖掉 debug 裹的