У меня есть этот код в моем приложении Winforms для создания таблицы в существующей базе данных (которую я создал, следуя тому, что написано здесь):
private void CreateTables()
{
string connStr = @"Data Source=
(LocalDB)\MSSQLLocalDB;AttachDbFilename=|DataDirectory|
\AYttFM.mdf;Integrated Security=True";
using (var connection = new
System.Data.SqlClient.SqlConnection(connStr))
{
try
{
connection.Open();
using (var command = connection.CreateCommand())
{
StringBuilder sb = new StringBuilder();
sb.Append("CREATE TABLE [dbo].[AssignmentHistory] ");
sb.Append("(");
sb.Append("[Id] INT NOT NULL PRIMARY KEY, ");
sb.Append("[WeekOfAssignment] DATE NOT NULL,");
sb.Append("[TalkType] INT NOT NULL,");
sb.Append("[StudentID_FK] INT NOT NULL, ");
sb.Append("[AssistantID_FK] INT NOT NULL, ");
sb.Append("[CounselPoint] INT NOT NULL");
sb.Append(")");
command.CommandText = sb.ToString();
command.ExecuteNonQuery();
}
}
catch (Exception ex)
{
MessageBox.Show(ex.Message);
}
}
}
Работает без нареканий, но таблица не создается. При обновлении папки "Подключение данных" и ее папки "Таблицы" в обозревателе серверов в Visual Studio Community 2015 таблицы не отображаются.
Я что-то упустил в коде выше?
Примечание. Я разбил connStr на несколько строк выше для целей форматирования; в реальном коде connStr находится в одной строке.
Я также не могу подключиться к файлу .mdf через LINQPad, используя «LINQ to SQL по умолчанию» и поставщика SQL Server и переходя к файлу .mdf в моем проекте (C:\AYttFMApp\AYttFMScheduler\AYttFMScheduler\AYttFM. мдф). Он говорит мне, что есть ошибка сети:
Я получаю это независимо от того, использую ли я сервер по умолчанию ".\SQLEXPRESS" или устанавливаю его на имя моей машины (это единственная запись в разделе "Серверы" в обозревателе серверов Visual Studio).
ОБНОВИТЬ
Я перезагрузил свой ноутбук, но это не помогло. Соединения данных Server Explorer ничего не показывают, даже после того, как я обновляюсь и пытаюсь добавить его, с именем моей машины в качестве имени сервера (в конце концов, это то, что он говорит, что сервер есть в Server Explorer), и выбор файла .mdf дает у меня та же ошибка при тестировании соединения, что и у LINQPad.
ОБНОВЛЕНИЕ 2
Все любопытнее и любопытнее: теперь, когда я запускаю свое приложение, когда оно доходит до кода создания таблицы, я получаю сообщение об исключении, в котором говорится, что таблица AssignmentHistory уже создана. Тем не менее, если я посмотрю в Server Explorer, хотя сама база данных снова вернулась, ее папка Tables по-прежнему пуста. Как стол может одновременно быть и не быть?
Мне все еще интересно, неверны ли свойства, установленные в файле .mdf; как я написал в комментарии ниже, все свойства имеют значения по умолчанию: «Копировать в выходной каталог» установлено значение «Копировать всегда», а для «Действие сборки» установлено значение «Содержимое». Следует ли изменить одно из них?
command.Connection.ConnectionString
непосредственно перед строкой executeNonQuery? - person muratgu   schedule 09.02.2016