almirvjezba's People
almirvjezba's Issues
[AV-1] Excercise 1
Pojasnjenje
Pravimo aplikaciju za aparate koji mjere potrosnju energije jednog domacinstva (struja, voda, plin itd.).
Znaci, korisnik se uloguje svaki mjesec i unosi ocitanja sa metra za predhodni mjesec. Nas ne interesuje ako ce slagati i sl. jer vani je ovo regulisano velikim kaznama.
Za svaki issue napravi branch i kad zavrsis uradi pull request na moje ime.
NEMOJ RADITI NISTA VISE OD ONOGA STO SAM TI NAPISAO DA RADIS. NECE ME IMPRESIONIRATI AKO URADIS LOGIN I REGISTRACIJU JER KAD BUDE TO TREBALO NAPRAVIT CU TI ISSUE ZA TO.
Zadatak 1
- Napravi VisualStudio web projekat, EMPTY!!!
- U solutionu dodaj novi projekat "ClassLibrary" (Entity Framework) sa nazivom "AlmirVjezbaContext".
- U tom projektu, koristeci CodeFirst pristup, napravi slijedece tabele (nisam ti definisao Foreign Keys zato sto hocu da ih sam skontas):
User:
Name | Type |
---|---|
Id | long not null auto increment |
Name | string not null |
LastName | string not null |
Gender | int not null |
Role | int not null |
Role:
Name | Type |
---|---|
Id | long not null |
Name | string not null |
Address:
Name | Type |
---|---|
Id | long not null auto increment |
Street | string not null |
Number | int |
Addition | string |
ZipCode | string not null |
MeterManufacturer:
Name | Type |
---|---|
Id | long not null auto increment |
Name | string not null |
State | string not null |
Number | string |
Address | string |
MeterType: (type of meter e.g. gas, electricity etc.)
Name | Type |
---|---|
Id | long not null auto increment |
Name | string not null |
Meter:
Name | Type |
---|---|
Id | long not null auto increment |
Name | string not null |
DateOfInstallation | datetime not null |
- Napuni podatke u bazi koristeci Procedure ili Insert statemente. Kada budes commitao kod, napravi .txt file negdje u projektu i zalijepi ih tamo.
[AV-1] Excercise 1 comments 1
Ovdje su stvari vezane za Context project:
- Ne znam kako ti radi ovo, ali trebas dodati i u MyContext projektu u App.config, connection string takodjer.
Connection string ti ne valja:
- Stavio si "Source=LOST", a sta kad ja pokrenem da mi napravi bazu, i meni se kompjuter ne zove "LOST"? Znaci stavi ili "." ili "localhost" kao source.
- Stavi da baza ima username i password.
- Ako si stavio da je sve na engleskom i naziv ConnectionStringa stavi na engleskom.
- Nemoj koristiti tamo u web aplikaciji "MyContext Db = new MyContext();" jer ti ne treba, trebaju ti migracije (jer zelimo poslije da vidimo sta smo uradili u svakoj migraciji).
Evo ti link i procitaj kako to da uradis:
https://msdn.microsoft.com/en-us/library/jj591621(v=vs.113).aspx#Enabling%20Migrations
-
Projekat se ne moze zvati "AlmirVjezbaContext1", znaci napisao sam da se zove "AlmirVjezbaContext".
-
Rename foldere:
DAL -> Context
Helper -> Interfaces
Model -> Models -
U citavom projektu imas praznih linija, imas ne formatiranog koda koliko hoces (ctrl+a, k f).
Takodjer vidi ako mozes rucno da izbrises ove usinge u fajlovima koje ne koristis (ako nemas resharper nema veze). -
U folderu Models, za svaki entity stavi iznad Id-a annotation [Key] da se zna da je primarni kljuc.
npr. bilo koji entity:
[Key]
public long Id { get; set; }
Za svaki navigation property (foreign key) stavi prvo long varijablu, pa onda navigation property.
Takodjer stavi iznad svakog navigation property-a data annotation [ForeignKey("ImePropertija")] da se zna da je to ForeignKey.
npr. kod tebe je ovo kod
public MeterType MeterType { get; set; }
public long MeterTypeId { get; set; }
napravi da bude ovako:
public long MeterTypeId { get; set; }
[ForeignKey("MeterTypeId")]
public MeterType MeterType { get; set; }
- Napravi List navigation property za svaki entitet koji ima 0:1 to many relaciju za nekim drugim entitetom.
Sto znaci npr. ovdje da bi u "MeterType" klasi dodao listu Meter-a koji su tog tipa, na dno:
public List Meters { get; set; }
Dodatno pojasnjenje zato sto znam da cete ovo buniti:
- Znaci svaki Meter ima MeterType. Sto znaci da ce jedan MeterType imati listu Meter-a koji su njegovog tipa.
- Mi kad pravimo query i hocemo da krenemo od MeterType, ne bi mogli selektovati sve Meter-e tog tipa.
- Znaci treba nam neki navigation property da to rijesimo. U ovom slucaju je to ova lista.
Ovdje su stvari vezane za Web project:
7. Obrisi svoj web projekat i dodaj novi, ali ovaj put prazan u potpunosti.
Kad obrises projekat iz solutiona, otidji u folder fizicki tog solution-a, i izbrisi ga i tamo da bi mogao kad budes pravio novi projekat (prazan) dati mu isto ime.
[AV-1] Excercise 1 comments 2
-
Fali Key atribut u "Address" klasi.
-
Brate znaci fulio si sve jebeno zivo i mrtvo sa Navigation propertijima.
Navigation propertiji
Evo krenut cu od ove klase "Meter":
- ako sam ti napisao primjer ovako:
npr. kod tebe je ovo kod
public MeterType MeterType { get; set; }
public long MeterTypeId { get; set; }
napravi da bude ovako:
public long MeterTypeId { get; set; }
[ForeignKey("MeterTypeId")]
public MeterType MeterType { get; set; }
Kako si ti uspio staviti "[ForeignKey("MeterTypeId")]" iznad "public long MeterTypeId { get; set; }".
Zar ti nije logicno ako ces koristiti "MeterType" property da pristupis entitetima MeterType klase, da stavis iznad njega ovaj data annotation? (kao sto sam ti napisao)
I stavi prvo ID, pa onda navigation property. I to sam ti napisao.
List navigation propertiji
Ja ne znam sta si ti mislio da su ove liste brate, ali sta god da si mislio nije.
Napisao sam ti ovo:
Napravi List navigation property za svaki entitet koji ima 0:1 to many relaciju za nekim drugim entitetom.
Sto znaci npr. ovdje da bi u "MeterType" klasi dodao listu Meter-a koji su tog tipa, na dno:
public List Meters { get; set; }
A kod tebe u MeterType klasi nigdje nema ove liste.
Hajde pokusaj zamisliti ovo, pogledaj te 2 tabele.
- Svaki "Meter" ce imati 1 Meter type
- "MeterType" ce samim tim imati vise "Meter"-a koji su njegovog tipa, sto znaci da on treba u sebi imati listu Meter-a.
Evo majka mu stara i kako to treba izgledati :
public class MeterType : IEntity
{
[Key]
public long Id { get; set; }
public bool IsDeleted { get; set; }
public string Name { get; set; }
public List<Meter> Meters { get; set; }
}
- Rekao sam ti empty web projekat, a ti si samo pobrisao foldere. Ako si vec brisao foldere mogao si izbrisati i "Scripts" folder, i obrisati nugget pakete koji su dodani a da ti ne trebaju.
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
๐ Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. ๐๐๐
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google โค๏ธ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.