Как заставить сайт ASP.NET MVC 3.0 использовать базу данных, отличную от SQLEXPRESS по умолчанию - PullRequest
2 голосов
/ 10 июля 2011

По сути, я пытаюсь разобраться с Microsoft ASP.NET MVC 3.0. Я использую Visual Studio 2010 Ultimate. Я проследил за видеоуроком по номеру http://www.asp.net/mvc/videos/5-minute-introduction-to-aspnet-mvc, который помог мне начать работу, и в результате создал веб-сайт, который обращается к локальной базе данных.

Вопрос 1:

Кто-нибудь знает, где находится эта локальная база данных? Я полагаю, что где-то используется база данных SQLEXPRESS по умолчанию. Он не отображается в обозревателе серверов, он не находится в папке App_Data. Я не могу найти его в любой папке в любом месте. Он был - насколько я понимаю - сгенерирован автоматически с использованием модели из проекта, и нигде он не говорит мне, где его положили.

Вопрос 2:

Что я действительно хотел бы сделать, так это запустить проект в онлайн-режиме, и я сделал это уже через AppHarbor.com. Они позволяют вам создать базу данных MS SQL Server и предоставить вам строку подключения для замены в Web.config, но заменив строку подключения и перестроив решение - даже после добавления базы данных AppHarbor (я уверен, что это бессмысленно) на сервер Explorer, мой сайт все еще использует неуловимую базу данных SQLEXPRESS, которую я не могу найти.

Изменение, которое я сделал в Web.config, было от:

  <connectionStrings>
    <add name="ApplicationServices"
         connectionString="data source=.\SQLEXPRESS;Integrated Security=SSPI;AttachDBFilename=|DataDirectory|aspnetdb.mdf;User Instance=true"
         providerName="System.Data.SqlClient" />
  </connectionStrings>

в формат

<connectionStrings>
    <add name="TestDB"
         connectionString="Server=SERVER;Database=DBNAME;User ID=USERID;Password=DBPASSWORD;" />         
</connectionStrings>

Вопрос первый, хотелось бы знать, но вопрос 2 действительно беспокоит меня. Какую ссылку на базу данных я пропустил, из-за чего она использует базу данных, о которой я не хочу и ничего не знаю? Я полагаю, что он должен быть, не в последнюю очередь потому, что когда я полностью удаляю строку подключения из Web.config, все равно работает нормально.

Любая помощь будет принята с благодарностью.

Ответы [ 5 ]

3 голосов
/ 04 августа 2011

Итак, я наконец-то понял, в чем проблема - немаловажную помощь здесь оказали все. Так что спасибо тебе. Было две главные вещи, которые я ошибался.

Во-первых, выясняется, что имя строки подключения важно. Мне нужно было назвать строку подключения после контекста, который я настроил в MVC. Так что мой «TestDB» был неправильным, и вместо этого для видео-учебника, на который я ссылался в своем вопросе, строка соединения должна называться «SportsContext».

Итак, в конце моя строка строки подключения для Web.Config выглядела так:

<connectionStrings>
<add name="SportsContext" connectionString="Server=SERVER;Database=DBNAME; User ID=USERID;Password=PASSWORD" providerName="System.Data.SqlClient" />
</connectionStrings>

Что довольно интересно, это не то, что вам говорят, что вы должны использовать в appharbor. Во-вторых, и еще один ключевой момент, который я упустил, хотя MVC с удовольствием создаст для вас ваши базы данных в SQLEXPRESS, он не будет делать то же самое для SQL Server. И при их самостоятельном создании в SQL Server вы должны быть уверены, что все правильно, включая автоинкрементные столбцы идентификаторов, внешние ключи и т. Д.

Эти два изменения - все, что нужно, чтобы мой сайт заработал и работал.

1 голос
/ 10 июля 2011

Сначала необходимо запустить C: \ WINDOWS \ Microsoft.NET \ Framework \\ aspnet_regsql.exe

запрограммируйте и укажите его в вашей удаленной (или локальной) базе данных

Вот ссылка на это - http://msdn.microsoft.com/en-us/library/x28wfk74.aspx

, затем просто измените запись веб-конфигурации, чтобы она указала на новую базу данных.

Вам нужно использовать

<add name="ApplicationServices" connectionString="DataSource=YourRemoteServerName;Initial
Catalog=YourDBName; Persist Security Info=True; UserID=YourUName;Password=YourPassword providerName="System.Data.SqlClient"
/>
0 голосов
/ 10 июля 2011

Пара вещей, которые нужно искать ...

  1. В элементе <ConnectionStrings> вы можете попытаться очистить любые существующие строки подключения путем <clear /> перед определением любых других строк подключения. Это удалит все унаследованные строки подключения, которые могут вызывать проблему.
  2. Поскольку вы используете MVC3, я предполагаю, что вы используете Entity Framework? Убедитесь, что ваш DbContext (ef 4.1) или любой другой объект Context правильно настроен для использования «TestDB».

Что касается того, где находится база данных SQLExpress, то из исходной строки подключения, похоже, она смотрит на ваш локальный сервер SQLExpress.

0 голосов
/ 10 июля 2011

У меня была такая же проблема, когда я пытался развернуть с помощью appharbor. Посмотрите в каталоге вашего проекта - у вас, вероятно, на самом деле есть три файла web.config - web.config, web.config.debug и web.config.release Visual Studio 2010 использует преобразования на основе состояния сборки проекта, чтобы решить, какие преобразования применить. Проверьте тестер трансформации из appharbor, чтобы выяснить это.

Также будьте осторожны, потому что, если у вас неправильные настройки в проекте Entity Framework, вы можете удалять базу данных на appharbor каждый раз, когда вносите изменения в свою модель. А учетная запись, которой вы предоставили учетные данные, не имеет разрешения на повторное создание этой базы данных.

Если вы используете встроенные пользовательские модели aspnet, убедитесь, что вы настроили их с базой данных appharbor вместо локального sqlexpress. Вот How-To на этом.

0 голосов
/ 10 июля 2011

Вопрос 1:

Введите services.msc в поле Windows-> Пуск-> Выполнить и убедитесь, что служба SQL EXPRESS запущена.

В обозревателе серверов в VS: подключиться к базе данных выберите Sql Server, введите его в качестве сервера:. \ SQLEXPRESS После этого вы сможете проверить ваше соединение.

Вопрос 2: HMMM Я могу воспроизвести ту же проблему, просто пытаясь перейти с SQLEXPRESS на мой экземпляр SQL по умолчанию через web.config. EF продолжает создавать БД в SQLEXPRESS. Интересно, но я понятия не имею.

...