Databas i C# entity , öka en kolumm med 1

Permalänk
Avstängd

Databas i C# entity , öka en kolumm med 1

Hej!

Jo , det är så att jag är ganska ny på c# och har kommit till databaser.

Jag har en databas som är med entity.

Det jag vill ha är att varje gång man trycker på en knapp (clickButton) så skall kolummen clicks öka med +1 hela tiden på en specifik "person".
Alltså, jag trycker på knappen 10 gånger, i databasen har kolummen clicks då ökat till 10 , jag trycker 15 gånger till och den har ökat till 25.
Jag förstår verkligen inte hur jag ska få den att göra det?
Namnet på databasen är ClickingGame och tabellen heter customers

Min databas ser ut såhär:

customers id - int name - varchar(50) nick - varchar(50) clicks - bigint Diamonds - int

Visa signatur

My setup:
[Intel Core i7-5960X @ 4ghz] - [Asus X99-deluxe] - [48GB Corsair Dominator Platinum] - [Geforce Gtx 780TI SLI] - [Corsair AX1200i] - [Kingston 240GB SSD m.2] - [4x 64GB OCZ-Vertex SSD in raid] - [6x 2TB Wd Red] - [Asus ROG SWIFT PG278Q]

Permalänk
Medlem

@dallan87:

Om du syftar på EntityFramework skulle jag rekommendera att försöka komma ifrån tänket med hur din databas och dina tabeller ser ut, fokusera istället på hur dina Entities ser ut. Det sköna med EntityFramework är ju att slippa skriva SQL.

Har du kommit så långt att du kan skriva och läsa från databasen?
Gör du detta via ett "Context" och har du skapat ett DbSet för entityn Customer?

Permalänk
Avstängd

@huff:

Har så jag kan läsa från databasen, med tex:

private void showUserName() { ClickerGameEntities1 db = new ClickerGameEntities1(); var result = db.customers .SingleOrDefault(c => c.nick == "dallan87"); namelabel.Text = result.name; }

Ska senare ändra så den läser från id men just nu så är det från nicket den läser.

Det funkar ju , men det är sen att uppdatera kolummen clicks med en knapp jag inte förstår redigt.

Visa signatur

My setup:
[Intel Core i7-5960X @ 4ghz] - [Asus X99-deluxe] - [48GB Corsair Dominator Platinum] - [Geforce Gtx 780TI SLI] - [Corsair AX1200i] - [Kingston 240GB SSD m.2] - [4x 64GB OCZ-Vertex SSD in raid] - [6x 2TB Wd Red] - [Asus ROG SWIFT PG278Q]

Permalänk
Medlem

@dallan87:

Du får ju ut en customer i ditt result.
En customer har en property clicks.

result.clicks++; db.SaveChanges();

Klart!

Permalänk
Avstängd

@huff:

trodde nästan det skulle vara så enkelt!
suttit i säkert 1,5 timme och bara provat mig fram

Tack så hemskt mycket!

Visa signatur

My setup:
[Intel Core i7-5960X @ 4ghz] - [Asus X99-deluxe] - [48GB Corsair Dominator Platinum] - [Geforce Gtx 780TI SLI] - [Corsair AX1200i] - [Kingston 240GB SSD m.2] - [4x 64GB OCZ-Vertex SSD in raid] - [6x 2TB Wd Red] - [Asus ROG SWIFT PG278Q]

Permalänk
Avstängd

@huff:

Dock verkar det vara ett problem, nu vet jag inte hur det funkar när det är utvecklarverision av sql.

Jag la till en "räknare" som läser från kolummen clicks och den uppdateras som den ska.

Däremot, när jag stänger ner programmet och tittar i databasen, så har den inte uppdaterats?

Gör den inte det eller är det något annat fel jag gjort?

koden ser ut såhär nu:

ClickerGameEntities1 db = new ClickerGameEntities1(); var result = db.customers .SingleOrDefault(c => c.nick == "dallan87"); result.clicks = result.clicks + 1; db.SaveChanges(); clicksdblabel.Text = result.clicks.ToString();

Visa signatur

My setup:
[Intel Core i7-5960X @ 4ghz] - [Asus X99-deluxe] - [48GB Corsair Dominator Platinum] - [Geforce Gtx 780TI SLI] - [Corsair AX1200i] - [Kingston 240GB SSD m.2] - [4x 64GB OCZ-Vertex SSD in raid] - [6x 2TB Wd Red] - [Asus ROG SWIFT PG278Q]

Permalänk
Medlem

@dallan87:

Du körde db.SaveChanges()?

Permalänk
Avstängd

@huff:

redigerade inlägget, kolla igen

Visa signatur

My setup:
[Intel Core i7-5960X @ 4ghz] - [Asus X99-deluxe] - [48GB Corsair Dominator Platinum] - [Geforce Gtx 780TI SLI] - [Corsair AX1200i] - [Kingston 240GB SSD m.2] - [4x 64GB OCZ-Vertex SSD in raid] - [6x 2TB Wd Red] - [Asus ROG SWIFT PG278Q]

Permalänk
Medlem

@dallan87:
Svårt att säga vad det beror på utan att se mer av koden tyvärr.. Speciellt ClickerGameEntities1.

Viktigt att tänka på också gällande EntityFramework är att din "räknare" som du gör, kollar inte kolumnen i databasen utan properyn på ditt objekt.

Permalänk
Medlem

@dallan87:

Testa med att lägg till följande innan db.SaveChanges();

db.customers.Attach(result);
db.Entry(result).State = EntityState.Modified;