У меня действительно раздражающая проблема с моим проектом Linq to SQL. Когда я добавляю все в веб-проекте, все идет как положено, и я могу сказать ему использовать мою существующую строку соединения, хранящуюся в файле web.config, и код Linq извлекается непосредственно из ConfigurationManager.
Все становится безобразно, когда я перемещаю код в собственный проект. Я создал файл app.config, поместил туда строку подключения, как это было в web.config, но при попытке добавить другую таблицу в IDE вынуждает меня либо жестко кодировать строку подключения, либо создает файл настроек и помещает его туда, что добавляет новую запись в файл app.config с новым именем.
Есть ли способ сохранить мой код Linq в своем собственном проекте, но при этом все равно обращаться к моему файлу конфигурации, если среда IDE не будет жестко задавать строку подключения или создавать файл настроек? Я преобразовываю часть моего DAL для использования Linq в SQL, поэтому я хотел бы использовать существующую строку подключения, которую использует наш старый код, а также сохранить значение в общем месте и в одном месте, а не в количество пятен.
Изменение режима вручную на WebSettings вместо AppSettings работает до тех пор, пока я не попытаюсь добавить новую таблицу, а затем вернуться к жесткому кодированию значения или воссозданию файла настроек. Я также попытался переключить тип проекта на веб-проект, а затем переименовать мой app.config в web.config, и тогда все работает так, как мне бы хотелось. Я просто не уверен, есть ли какие-либо недостатки в сохранении этого в качестве веб-проекта, поскольку он действительно не является таковым. Проект содержит только код Linq to SQL и реализацию классов моего репозитория.
Мой макет проекта выглядит так
Website
-connectionString.config
-web.config (refers to connectionString.config)
Middle Tier
-Business Logic
-Repository Interfaces
-etc.
DAL
-Linq to SQL code
-Existing SPROC code
-connectionString.config (linked from the web poject)
-app.config (refers to connectionString.config)
Обновление
Вот пример кода, о котором я говорю
Веб-проект
public DB() :
base(global::System.Configuration.ConfigurationManager.ConnectionStrings["SiteSqlServer"].ConnectionString, mappingSource)
{
OnCreated();
}
Не веб-проект
public DB() :
base(global::SampleProject.Data.Properties.Settings.Default.SiteSqlServer, mappingSource)
{
OnCreated();
}
Каждый раз, когда я пытаюсь сделать конструктор по умолчанию похожим на первый, он всегда автоматически возвращается ко второму, как только я вносю изменения в файл, если DBML не находится внутри веб-проекта.