Используя 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();