[Homework] Web Services and Cloud - TestingWebServices
Малко CODE от мен ;)
Малко CODE от мен ;)
Редакция: реших си проблема, в по-долния ми коментар пише как.
Моля за помощ. Правя си News.Services проекта. Създава ми база News чрез code first. Виждам базата в MS SQL SMS. Добавям си една-две новини в нея през MSSQLSMS. Добавям си една новина в нея с Postman. Дотук всичко върви ок.
Правя тестови проект. Пускам единственият тест, който е "Създай нова новина в базата". Тестът не е в транзакция, connection string-ът му е към основната база News, и въпреки това ми създава новата новина незнайно къде. Тестът минава успешно, специално си направих конозлно приложение в solution-a за да листна новините оттам - листва ми новината, създадена от тестовия проект, но не и тези, които първоначално бях направила с Postman и с MSSQLSMS. Connection string-овете ми навсякъде са еднакви (даже слагах някакво <clear/> в тях, в опит да реша проблема), но въпреки това: .Services работи в едната база, .Tests и .ConsoleClient работят с друга база. Някаква идея защо?
Здравей,
според това, което видях базата трябва да ти е в (localdb)\mssqllocaldb.
Може би грешката ти е, че я търсиш в localhost.
Цецо, благодаря, че се опитваш да ми помогнеш!
Дебъгнах си теста. Като отворя dbcontext, там имам пропърти Configuration - Non-Public members- Connection - Connectionstring: "Data Source = .//SQLEXPRESS; Initial Catalog = News..." и т.н.
Пуснах си през MSSQLServer ./SQLEXPRESS сървъра и хоп - появи ми се базата News с всички тестови новини, които бяха направени от тестовия проект.
С други думи: .Services проектът ми работи с (localdb)\mssqllocaldb сървър, а .Tests и .ConsoleClient проектите ми работят с ./SQLEXPRESS сървър.
Connection string-овете обаче на всички тези проекти са еднакви!!! Как да накарам всичко да работи с (localdb)?
Впрочем, пробвах да направя целия solution отначало и стана същото.
Горе-долу си реших проблема: трябваше да сменя default connection factory в app.config файловете (за да ползва (localdb)\mssqllocaldb). След като го смених обаче почна да хвърля някакви ексепшъни свързани с миграциите, как вече имало обект NewsItems в базата и не можело да добави нов. Не можах да се оправя с тея миграции, затова ми се наложи да си изтрия базата News и EF да я направи отново, така тръгна.
Лошото е, че сега ако сменя базата в connection string-a в app.config на тестовия проект на NewsTestDb, не ми прави нова база, в която да тества, а продължава да слага data-та в News. Ако някой има решение за това, ще се радвам да го каже.
Новите app.config файлове са в гитхъб, ако някой иска да ги види.
Имаш два контекста. Единия е в проеката News.Services във файла IdentityModel, а другият ти е в News.Data. Може би от там ти идват проблемите.
Друго което ми направи впечатление е следното:
Това, което съм почернил, трябва да е едно и също и на двете места. Иначе, все едно не ползваш този connectionString.
Имай предвид, че стринга който се задава на Server за localdb е различен за различните версии на МSSQL Server-a
- 2012 - (LocalDB)\v11.0
-2014 Express - (localdb)\mssqllocaldb
Като триеш базите, изтрий ги в localhost и в localdb.
Дано съм ти помогнал, тъй като не съм сигурен дали точно разбрах проблема.