[Homework] Web Services and Cloud - TestingWebServices

[Homework] Web Services and Cloud - TestingWebServices

Karlie avatar Karlie 437 Точки

Редакция: реших си проблема, в по-долния ми коментар пише как.

Моля за помощ. Правя си News.Services проекта. Създава ми база News чрез code first. Виждам базата в MS SQL SMS. Добавям си една-две новини в нея през MSSQLSMS. Добавям си една новина в нея с Postman. Дотук всичко върви ок.

Правя тестови проект. Пускам единственият тест, който е "Създай нова новина в базата". Тестът не е в транзакция, connection string-ът му е към основната база News, и въпреки това ми създава новата новина незнайно къде. Тестът минава успешно, специално си направих конозлно приложение в solution-a за да листна новините оттам - листва ми новината, създадена от тестовия проект, но не и тези, които първоначално бях направила с Postman и с MSSQLSMS. Connection string-овете ми навсякъде са еднакви (даже слагах някакво <clear/> в тях, в опит да реша проблема), но въпреки това: .Services работи в едната база, .Tests и .ConsoleClient работят с друга база. Някаква идея защо?

Това е кодът.

 

0
17/04/2015 23:14:22
ZvetanIG avatar ZvetanIG 925 Точки

Здравей,
според това, което видях базата трябва да ти е в  (localdb)\mssqllocaldb. 
Може би грешката ти е, че я търсиш в localhost.

<add name="DefaultConnection" connectionString="Server=(localdb)\mssqllocaldb;Database=News;Integrated Security=TrueproviderName="System.Data.SqlClient" />
 

 

1
17/04/2015 08:55:30
Karlie avatar Karlie 437 Точки

Цецо, благодаря, че се опитваш да ми помогнеш!

Дебъгнах си теста. Като отворя 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 отначало и стана същото. yell

Горе-долу си реших проблема: трябваше да сменя default connection factory в app.config файловете (за да ползва (localdb)\mssqllocaldb). След като го смених обаче почна да хвърля някакви ексепшъни свързани с миграциите, как вече имало обект NewsItems в базата и не можело да добави нов. Не можах да се оправя с тея миграции, затова ми се наложи да си изтрия базата News и EF да я направи отново, така тръгна.

Лошото е, че сега ако сменя базата в connection string-a в app.config на тестовия проект на NewsTestDb, не ми прави нова база, в която да тества, а продължава да слага data-та в News. Ако някой има решение за това, ще се радвам да го каже.

Новите app.config файлове са в гитхъб, ако някой иска да ги види.

 

0
17/04/2015 23:34:35
ZvetanIG avatar ZvetanIG 925 Точки

Имаш два контекста. Единия е в проеката  News.Services във файла IdentityModel, а другият ти е в News.Data.  Може би от там ти идват проблемите.

Друго което ми направи впечатление е следното:

public NewsDbContext()
: base("News")
{
 
 
}
<add name="DefaultConnection" connectionString="Server=(localdb)\mssqllocaldb;Database=News;Integrated Security=True" providerName="System.Data.SqlClient" />
 

Това, което съм почернил, трябва да е едно и също и на двете места. Иначе, все едно не ползваш този connectionString.

Имай предвид, че стринга който се задава на Server за localdb  е различен за различните версии на МSSQL Server-a
- 2012  -  (LocalDB)\v11.0
-2014 Express -   (localdb)\mssqllocaldb

Като триеш базите, изтрий ги  в localhost  и в localdb.

Дано съм ти помогнал, тъй като не съм сигурен дали точно разбрах проблема.

 

1
18/04/2015 13:30:20
Karlie avatar Karlie 437 Точки

Да, това е бил проблемът. Не съм махнала контекста от Services.Models, той си ползва Default Connection и си работи. А пък този, който ми е в .Data се създава с connection "News", каквато нямам в app.config-ите и съответно никога не я ползва. Оправих нещата и тръгнаха.

Много благодаря! Този курс ми е пълна мъгла, ще се повтаря явно...

0
ZvetanIG avatar ZvetanIG 925 Точки

Здравей,
според това, което видях базата трябва да ти е в  (localdb)\mssqllocaldb. 
Може би грешката ти е, че я търсиш в localhost.

0
ZvetanIG avatar ZvetanIG 925 Точки

Здравей,
според това, което видях базата трябва да ти е в  (localdb)\mssqllocaldb. 
Може би грешката ти е, че я търсиш в localhost.

0