Я работаю над приложением C# .NET, которое использует LINQ to SQL для доступа к базе данных. К сожалению, я провел последние 4 часа, пытаясь заставить приложение работать в моей домашней сети. Я привел приложение домой раньше для разработки без проблем и передал изменения на работу. Однако сегодня вечером я продолжал сталкиваться с проблемами доступа к базе данных и заметил, что строка подключения в моем DAO ссылается на мою работу ComputerName/Instance. Я искал все свои решения для своего рабочего имени ПК (например, BEN-Laptop), а также использовал расширенные параметры поиска Windows для поиска по всему каталогу. Однако я не мог найти ссылки на мой рабочий ПК. Когда я привел домой приложение для работы, я изменил все значения строки подключения с моего рабочего компьютера на мой домашний компьютер, и я не понимаю, почему строка подключения в DAO каким-то образом все еще ссылается на мой рабочий экземпляр ПК и SQL. Является ли эта информация кэшированной где-то, потому что я в недоумении.LINQ to SQL DataContext не обновляет ConnectionString
ответ
Если вы откроете свой файл dbml в представлении дизайна и просмотрите свойства (F4), вы должны найти свойство ConnectionString. Когда вы расширяете список доступных строк подключения, он должен указать источник каждой строки. Скорее всего, это файл настроек. (~ \ Properties \ Settings.settings)
В идеале, когда вы создаете контекст данных, вы должны использовать конструктор, который принимает строку соединения, и вы точно узнаете, откуда он.
using(var dc = new TestDataContext(connectionString))
{
// Do stuff
}
Проблема с моей строкой подключения базы данных в DataContext была фактически результатом того, что мой коллега реструктурировал решение. Короче говоря, приложение Windows находится в одном проекте, и логика базы данных компилируется как DLL в другом проекте. Приложение Windows ссылалось на старую версию DLL, которая, видимо, имела мои рабочие настройки для строки подключения. Мне просто пришлось изменить ссылку в моем проекте на правильную DLL, и все сработало нормально. Это также объясняет, почему я не мог найти ссылки на мой рабочий ПК в решении, потому что я предполагаю, что параметры скомпилированы в DLL-файл. Попытка отладить мой проект DLL базы данных помогла привести к этому открытию. После установки нескольких точек останова в базовых классах DAO и Repository и обнаружении IDE было обход точек останова, это побудило меня проверить ссылки.
Теперь я передаю строку соединения в мои конструкторы, как было предложено выше. – Grasshopper
Для дальнейшего использования вам следует попробовать использовать ссылки на проект, а не ссылаться на выход DLL проекта. –
первый: просто укажите новую строку подключения, которая должна выглядеть следующим образом
string pp = @"Data Source=(LocalDB)\v11.0;AttachDbFilename=C:\Program Files\Microsoft SQL Server\MSSQL11.MSSQLSERVER\MSSQL\DATA\AdventureWorks2012_Data.mdf;Integrated Security=True;Connect Timeout=30";
второй:
DataClasses1DataContext dc = new DataClasses1DataContext(pp);
третий: делать изменения на экземпляры таблицы classs
четвертый:
dc.Persons.InsertOnSubmit(person);
dc.SubmitChanges();
Еще один ответ, где понятно, что вы не понимаете вопроса –
У вашего конструктора DataContext()
отсутствует строка, которая сообщает ей путь к вашей фактической базе данных.
да получил его помощник –
- 1. DataContext - LINQ to SQL
- 2. connectionstring в linq to sql
- 3. LinQ to SQL naming DataContext
- 4. Linq to SQL Использование DataContext
- 5. Кэширование LINQ to SQL DataContext
- 6. Linq to Sql datacontext не определен
- 7. Linq to SQL intellisense не знает таблиц в объекте datacontext
- 8. linq to sql datacontext для веб-приложения
- 9. LINQ to SQL - где живет ваш DataContext?
- 10. Как восстановить (обновить) LINQ to SQL DataContext?
- 11. Как долго хранить DataContext LINQ-to-SQL?
- 12. LINQ to SQL DataContext и IDisposable
- 13. LINQ to SQL multiple DataContext-s
- 14. Linq to SQL DataContext Lifetime Management Issue
- 15. Linq to SQL Bombing Out on DataContext
- 16. Linq to SQL dataContext проблема времени жизни
- 17. Как получить DataContext объекта LINQ to SQL?
- 18. Обновление Linq to SQL не обновляет данные, без исключений C#
- 19. Данные привязки Linq to SQL без DataContext
- 20. Linq-to-SQL DataContext для нескольких потоков
- 21. Несколько/один экземпляр Linq to SQL DataContext
- 22. уровень изоляции в linq to sql, DataContext
- 23. LINQ to SQL: Повторное использование DataContext
- 24. имя атрибута в datacontext (linq to sql)
- 25. Объект бизнес-уровня LINQ-To-SQL DataContext
- 26. Linq to SQL DataContext Windsor IOC проблема с утечкой памяти
- 27. ASP.NET LINQ to SQL SubmitChanges() не обновляет базу данных
- 28. LINQ to SQL - сохранить объект без создания нового DataContext?
- 29. с linq to sql datacontext to httpcontext в бизнес-слое
- 30. Несколько соединений базы данных в LINQ to SQL DataContext
Чтобы быть более конкретным, свойства соединения, которые я изменил, были в основном в файле app.config и dbml. Я просто не понимаю, почему мое приложение все еще пытается найти базу данных на моем рабочем ПК, когда я использовал каждый механизм поиска, чтобы изменить ссылки с моего рабочего ПК (т. Е. Ben-Laptop на Major-HomePC). Единственное, о чем я могу думать, это то, что эта информация кэшируется где-то вне моего проекта, но я довольно новичок в разработке .NET и чувствую, что исчерпал свои усилия. Пожалуйста, предложите предложения. Я это оценил. – Grasshopper
Попробуйте «Очистить» ваш проект и сделайте 'ReBuild'. Во-вторых, строка подключения читается только из 'app.config', можете ли вы сказать мне, где вы нашли ее в файле' dbml'. Изменения в app.config отражаются только при перезапуске приложения.Каков тип приложения winform, консоли или окна? –