Git Product home page Git Product logo

almirvjezba's People

Contributors

uraharadono avatar

Watchers

 avatar  avatar

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:

  1. 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.
  1. 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

  1. Projekat se ne moze zvati "AlmirVjezbaContext1", znaci napisao sam da se zove "AlmirVjezbaContext".

  2. Rename foldere:
    DAL -> Context
    Helper -> Interfaces
    Model -> Models

  3. 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).

  4. 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; }
  1. 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

  1. Fali Key atribut u "Address" klasi.

  2. 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; }
    }
  1. 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 photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo 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.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.