2015-04-29 2 views
0

Я разрабатываю свое приложение в Visual Studio 2012 с .NET Framework 4.5 и используя MDF-файл как локальный db. Проблема здесь в том, что изменения, внесенные в данные во время выполнения, не сохраняются постоянно. Тем не менее, я могу получить данные во время выполнения, даже сохранить его, но они не отображаются в проводнике сервера. Я уже установил свойство «Скопировать в файл вывода» файла MDF в «Копировать, если новый», но проблема все еще существует. Как это решить?LocalDB Свойство файла MDF «Копировать, если новый» не работает

Это строка подключения в app.config приложения. Раньше я пробовал файл Sexate data set .xsd, но безрезультатно.

<connectionStrings> 
<add name="EA_Logistics_Control.Properties.Settings.LogisticsLocalDBCS" 
    connectionString="Data Source=(LocalDB)\v11.0 
AttachDbFilename=|DataDirectory|\LocalDBs\LogisticsLocalDB.mdf;Integrated 
Security=True" 
    providerName="System.Data.SqlClient" /> 
</connectionStrings> 

Некоторые могли бы предложить:

  1. Использование SQLExpress в качестве сервера вместо LocalDB или
  2. Попробуйте подключиться к LocalDB программным и заменить Bin \ Debug с "folder_name \ file_name.mdf"

но тогда они не являются актуальными решениями, просто альтернативными. Кто-нибудь может объяснить, что здесь происходит? и как его решить?

В соответствии с просьбой, C# код:

DateTime dt = DateTime.Now; 
string CDate = dt.Month + "/" + dt.Day + "/" + dt.Year; 
int norid = 0, neeid = 0, cfrom = 0, cto=0; 

SqlConnection SCon = new SqlConnection(ConfigurationManager.ConnectionStrings["EA_Logistics_Control.Properties.Settings.LogisticsLocalDBCS"].ConnectionString); 

if (SCon.State == ConnectionState.Closed) 
    SCon.Open(); 
SqlCommand SCom = new SqlCommand("INSERT INTO Consignments VALUES(@CNo, @CDate, @InvoiceNo, @SignorID, @SigneeID, @TravelFrom, @TravelTo, @Packages, @Contents, @VehicleNo, @Rate, @Weight, @Amount, '')", SCon); 

SCom.Parameters.AddWithValue("CNo", TB_IC_CN.Text); 
SCom.Parameters.AddWithValue("CDate", CDate); 
SCom.Parameters.AddWithValue("InvoiceNo", TB_IC_O_Inv.Text); 
SCom.Parameters.AddWithValue("SignorID", norid); 
SCom.Parameters.AddWithValue("SigneeID", neeid); 
SCom.Parameters.AddWithValue("TravelFrom", cfrom); 
SCom.Parameters.AddWithValue("TravelTo", cto); 
SCom.Parameters.AddWithValue("Packages", TB_IC_NUM_O_Pkgs.Text); 
SCom.Parameters.AddWithValue("Contents", TB_IC_Desc.Text); 
SCom.Parameters.AddWithValue("VehicleNo", TB_IC_O_Veh.Text); 
SCom.Parameters.AddWithValue("Rate", TB_IC_NUM_O_Rate.Text); 
SCom.Parameters.AddWithValue("Weight", TB_IC_NUM_O_Wt.Text); 
SCom.Parameters.AddWithValue("Amount", TB_IC_NUM_Amt.Text); 
int resRows = SCom.ExecuteNonQuery(); 
if (resRows > 0) 
{ 
    MessageBox.Show("New entry has been inserted."); 
} 

Он показывает мне окно и я также видел количество строк во время отладки.

+0

Показать код, который используется для сохранения изменений данных во время выполнения. –

+1

Итак, ваш проводник сервера использует исходный файл, и приложение использует файл в каталоге bin, что является проблемой? Это действительно проблема? –

+0

Моя проблема в том, что данные не сохраняются. Можете ли вы предложить, как это решить? –

ответ

1

Я получил помощь от @SamiKuhmonen и @BrendanGreen по этому вопросу, и решение заключалось в том, что я проверял наличие данных в файле MDF моей папки проекта через Server Explorer, вместо этого я должен был проверить файл MDF в папке bin \ Debug, где мои данные были постоянными. Я сделал это, создав новое соединение в Server Explorer для вывода файла MDF. Я ошибочно предположил, что обновленный файл MDF перезапишет файл в папке проекта, так как предполагается, что это функция «Копировать, если она новая». Фактически он копирует исходный файл в папку bin, а не наоборот. Совершенно очевидно, что заполнение MDF будет пустым для новой установки, и после развертывания приложение на стороне пользователя будет ссылаться только на развернутый файл, аналогичный файлу bin \ Debug.

+0

Я столкнулся с подобной проблемой! У меня есть вопрос, хотя если бы я сделал это, не копируйте, будет ли проблема во время развертывания? –

Смежные вопросы