LINQ to SQL SubmitChanges () не работает для вставки новой записи - PullRequest
1 голос
/ 29 марта 2012

Во-первых, я довольно новичок в LINQ to SQL, так что это, вероятно, глупый вопрос, но я пытаюсь вставить новую запись в базу данных и получаю следующую ошибку:

The client was unable to establish a connection because of an error during connection initialization process before login. Possible causes include the following:  the client tried to connect to an unsupported version of SQL Server; the server was too busy to accept new connections; or there was a resource limitation (insufficient memory or maximum allowed connections) on the server. (provider: Shared Memory Provider, error: 0 - The handle is invalid.)

Я могу просмотреть свой код и увидеть, что все данные присутствуют так, как я ожидал, но когда они достигли

db.SubmitChanges()

в методе ниже я получаю ошибку. Что я делаю неправильно? Это разочаровывает SOO, и я потерял один день, пытаясь выяснить LINQ to SQL ... Я наполовину испытывал желание просто упаковать его и вернуться к использованию ADO.NET и хранимых процедур.

public static void Save(Customer customerToSave)
    {
        IpmDatabaseDataContext db = new IpmDatabaseDataContext();
        db.Customers.InsertOnSubmit(customerToSave);

        // commit the changes to the db
        db.SubmitChanges();     
    }

В моем app.config есть строка подключения:

<connectionStrings>
    <add name="IPM.Business.Properties.Settings.IPMConnectionString"
        connectionString="Data Source=socrates\sqlexpress;Initial Catalog=IPM;Integrated Security=True"
        providerName="System.Data.SqlClient" />
</connectionStrings>

Я все еще на моем компьютере разработчика, поэтому это правильная строка подключения.

1 Ответ

0 голосов
/ 29 марта 2012

Какую строку подключения вы передаете IpmDatabaseDataContext? Получаемая ошибка не связана с LINQtoSQL, это проблема подключения к базе данных.

Чтобы устранить проблему, попробуйте явно передать строку подключения в конструктор DataContext, например ::100100

IpmDatabaseDataContext db = new IpmDatabaseDataContext(
    @"Data Source=localhost\SQLEXPRESS;Integrated Security=true");

Следующие сообщения предполагают, что дескриптор Shared Memory Provider ... недействителен Ошибка исчезнет, ​​если вы перезагрузите Windows:

ASP.NET MVC: использование одной базы данных для Entity Framework и членства в ASP.NET

Произошла ошибка транспортного уровня при получении результатов с сервера

...