Изменение базы данных с помощью LINQ to SQL в C # делает базу данных недоступной в SQL Management Studio - PullRequest
1 голос
/ 15 ноября 2011

Используя SQL Server 2008 Express, я присоединяю базу данных Northwind в SQL Server Management Studio, и все работает отлично.

Затем я отключаю сервер, выключаю SQL Server Management Studio и изменяю базу данных Northwind, используя следующий код LINQ to SQL C #:

using System.Linq;
using System.Data.Linq;
using System.Data.Linq.Mapping;

namespace LinqConsoleApp
{
    class Program
    {
        static void Main(string[] args)
        {
            Northwnd db = new Northwnd(@"C:\Program Files (x86)\Microsoft SQL
                Server\MSSQL10.SQLEXPRESS\MSSQL\DATA\northwnd.mdf");

            Customer testCust = new Customer();
            testCust.CompanyName = "Dummy"; testCust.CustomerID = "DE1";
            db.Customers.InsertOnSubmit(testCust);

            db.SubmitChanges();
            db.Dispose();            

        }
    }
}

Это выполняется без ошибок.Когда я снова открываю Management Studio и выбираю базу данных Northwind, я получаю сообщение об ошибке «база данных недоступна» и не может просмотреть ни одну из таблиц Northwind.

Любая идея, почему запуск этого кода LINQ может помешатьManagement Studio от последующего доступа к базе данных?

Спасибо


обновление:

Класс Northwnd был автоматически создан из sqlmetal.exe, поэтому он выполняет следующие действияподключиться к файлу MDF при вызове конструктора Northwnd():

public Northwnd(string connection) : (connection, mappingSource)
{
    OnCreated();
}

, где OnCreated() ничего не делает, базовый класс равен System.Data.Linq.DataContext, а 'mappingSource':

private static System.Data.Linq.Mapping.MappingSource mappingSource = new AttributeMappingSource();

1 Ответ

0 голосов
/ 16 ноября 2011

Можете ли вы показать нам, что именно вы делаете в вашем Northwnd классе?

Я думаю, что это странно (если не сказать больше - если не явно опасно), что вы, кажется, Northwind подключены к своему экземпляру SQL Server Express (так что вы можете получить к нему доступ в SQL Server Management Studio), ив то же время ваш Northwnd класс, кажется, обращается к этому файлу MDF (пока он подключен к SQL Server Express) напрямую .......

Я бы попыталсяиспользуйте «обычные» строки подключения, если бы я мог:

server=.\SQLExpress;Database=Northwind;Integrated Security=SSPI

, пока база данных подключена к экземпляру SQL Server Express ......

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...