Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.

LINQ to SQL - razna pitanja

[es] :: .NET :: LINQ to SQL - razna pitanja

Strane: 1 2

[ Pregleda: 756 | Odgovora: 25 ]

Postavi temu Odgovori

Autor

Pretraga teme: Traži
Markiranje Štampanje RSS

mmix
Miljan Mitrovic
Entrepreneur wannabe :)
Pancevo, Srbija

Moderator
Član broj: 17944
Poruke: 1449
195.252.78.*



Profil

icon Re: LINQ to SQL - razna pitanjapre 9 dana i 8h
BTW, ne znam dal ste primetili ali dbml dizajner kada generise entitete iz baze sam provaljuje plural imena entieta po engleskoj terminologiji, tako ad kad koristis tabela sa nazivima na naskom, npr Radnik, dobijas sledece

var radnici = from r in db.Radniks select r;
▪ The word 'politics' is derived from the word 'poly', meaning 'many', and the word 'ticks', meaning 'blood sucking parasites' - Larry Hardiman
▪ If the good guy gets the girl, it's rated PG; if the bad guy gets the girl, it's rated R; and if everybody gets the girl, it's rated X
▪ Illegal aliens have always been a problem in the United States. Ask any Native American
03.05.2008. u 17:12 

Shadowed
.NET developer

SuperModerator
Član broj: 649
Poruke: 8510
*.dynamic.sbb.rs.

Sajt: noreferer.no-ip.org/?go=1


Profil

icon Re: LINQ to SQL - razna pitanjapre 9 dana i 7h
Jeste. Meni su tabele u mnozini ali je objekte kreirao u jednini (a kolekcije opet u mnozini). Mnogo je bre pametan :)

Isprobao sam ono..
kada uradim ovo on kreira novi hotel i lepo iskoristi postojecu drzavu:
Citat:

Dim h As New Hotel

h.HotelName = "testhotel"
h.Country = (From c In db.Countries Where c.ID = 152 Select c).First()
db.Hotels.InsertOnSubmit(h)
db.SubmitChanges()


Ali kada uradim ovo:
Citat:

Dim h As New Hotel

h.HotelName = "testhotel"
h.Country = New Country() With {.CountryName = "Serbia", .ID = 152}
db.Hotels.InsertOnSubmit(h)
db.SubmitChanges()


Pokusa da napravi novi Country i prijavi gresku jer je ID Identity. E sad, kako on zna da je u jednom slucaju drzava dobijena iz baze a u jednom kreirana "rucno" - pojma nemam :)

[Ovu poruku je menjao Shadowed dana 04.05.2008. u 00:11 GMT+1]
Download from Youtube
Mozda sam ja paranoican, ali to ne znaci da mi neko ipak ne radi o glavi.

FBzP
03.05.2008. u 18:08 

mmix
Miljan Mitrovic
Entrepreneur wannabe :)
Pancevo, Srbija

Moderator
Član broj: 17944
Poruke: 1449
195.252.78.*



Profil

icon Re: LINQ to SQL - razna pitanjapre 9 dana i 5h
To je zato sto ti je razmisljanje jos uvek fokusirano na DataSet funkcionalnost. Fundamentalna razlika u LINQu je sto entiteti ne cuvaju svoje database stanje, kao sto je to radio DataRow i DataTable, nemas rowstate, nemas dirty flag, nista od toga ne postoji u entitetima, zato su tako i "mrsavi" (sto je sa druge strane dobro kad treba da ih serijalizujes). Sam DataContext objekat cuva reference svih entiteta koje dobije bilo od tebe bilo od baze zajedno sa sync stateom tog entiteta. Kad si ga ucitao u prvoj varijanti, context ga je zapamtio i tako znao da taj podatak vec postoji u bazi, kad si ga kreirao sa New i dodao u kontekst kontekst ga je prihvatio kao novo kreirani entitet i zakljucio da treba da ga posalje bazi kao INSERT.

Isto tako iz tog razloga entiteti implementiray propertychange, tako context uhvati informaciju da si promenio neko polje u objektu i odmah ga markira za update.

Inace, kad radis:
h.Country = (From c In db.Countries Where c.ID = 152 Select c).First()

forsiras select nad Country tabelom u bazi da bi kreirao Country objekat, a vec imas njegov ID, umesto toga uradi samo

h.CountryId = 152;


▪ The word 'politics' is derived from the word 'poly', meaning 'many', and the word 'ticks', meaning 'blood sucking parasites' - Larry Hardiman
▪ If the good guy gets the girl, it's rated PG; if the bad guy gets the girl, it's rated R; and if everybody gets the girl, it's rated X
▪ Illegal aliens have always been a problem in the United States. Ask any Native American
03.05.2008. u 19:22 

Shadowed
.NET developer

SuperModerator
Član broj: 649
Poruke: 8510
*.dynamic.sbb.rs.

Sajt: noreferer.no-ip.org/?go=1


Profil

icon Re: LINQ to SQL - razna pitanjapre 9 dana i 1h
Hah. Ako kreiram nov hotel i hocu da ga submit-ujem, netje da radi :)
Elem, ID mu je Integer i po default-u 0 i vec postoji u tabeli. Mogao bih da uzmem najveci ID iz tabele i dodelim za 1 vise, ali to nije bas lepo resenje a i stavio sam da je ID Identity kolona. Ako probam MyHotel.ID = Nothing, ne prolazi jer nije Nullable i Nothing biva konvertovano u 0 (u C#-u bi mozda izbacio exception).
Download from Youtube
Mozda sam ja paranoican, ali to ne znaci da mi neko ipak ne radi o glavi.

FBzP
03.05.2008. u 23:23 

mmix
Miljan Mitrovic
Entrepreneur wannabe :)
Pancevo, Srbija

Moderator
Član broj: 17944
Poruke: 1449
195.252.78.*



Profil

icon Re: LINQ to SQL - razna pitanjapre 8 dana i 16h
Nesto ti nije dobro ili u object modelu ili u bazi.

Proveri da li ti je polje u bazi int identity. To je neophodno da bi kljuc bio generisan na nivou baze (gde i treba).


Dalje pogledaj HotelID polje u Hotel entitetu (ne znam da li si koristio dbml ili si sam pravio entitete) u svakom slucaju HotelId property u Hotel entitetu mora da bude okicen sa sledecim parametrima COlumn atributa:

Code:

[System.Data.Linq.Mapping.Column(
AutoSync=AutoSync.OnInsert, 
DbType="Int NOT NULL IDENTITY", 
IsPrimaryKey=true, 
IsDbGenerated=true)]


u suprotnom nece raditi jer ce LINQ for SQL smatrati da polje nije autogenerisano u bazi i probace da insertuje sa konkretnom vrednoscu koja je u propertiju. I btw, odmah da ti kazem da je losa praksa imati identity (0, 1) polje u bazi, bolje pocni od 1 cisto zbog situacija u kojima bi ti 0 predstavljalo zamenu za NULL.



▪ The word 'politics' is derived from the word 'poly', meaning 'many', and the word 'ticks', meaning 'blood sucking parasites' - Larry Hardiman
▪ If the good guy gets the girl, it's rated PG; if the bad guy gets the girl, it's rated R; and if everybody gets the girl, it's rated X
▪ Illegal aliens have always been a problem in the United States. Ask any Native American
04.05.2008. u 09:15 

Shadowed
.NET developer

SuperModerator
Član broj: 649
Poruke: 8510
*.dynamic.sbb.rs.

Sajt: noreferer.no-ip.org/?go=1


Profil

icon Re: LINQ to SQL - razna pitanjapre 8 dana i 14h
Moja greska :\
Nekako (pretpostavljam da sam zaboravio), u bazi nije bilo podeseno da kolona bude identity. Koristim dbml. Promenio sam u bazi, ali nisam znao kako da ga nateram da skonta sam (osim da izbacim pa ubacim tabelu) pa sam samo promenio u property-u za tu kolonu. Atributi su kao sto si naveo.
Ne pravim identity(0,1), ostavljam po default-u (1,1) nego nije bio identity a insertovao sam jedan koji je prosao sa Nothing->0 :)
Download from Youtube
Mozda sam ja paranoican, ali to ne znaci da mi neko ipak ne radi o glavi.

FBzP
04.05.2008. u 10:50 

[es] :: .NET :: LINQ to SQL - razna pitanja

Strane: 1 2

[ Pregleda: 756 | Odgovora: 25 ]

Postavi temu Odgovori

Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.