VS2010, OnceClick a Sql server Compact – .NET – Fórum – Programujte.com
 x   TIP: Přetáhni ikonu na hlavní panel pro připnutí webu

VS2010, OnceClick a Sql server Compact – .NET – Fórum – Programujte.comVS2010, OnceClick a Sql server Compact – .NET – Fórum – Programujte.com

 

Toto vlákno bylo označeno za vyřešené — příspěvek s řešením.
VladislavK0
Super člen
19. 7. 2013   #1
-
0
-

Mam hotovou aplikaci založenou na EF pod kterým leží MSSqlServerCompact (zkoušel jsem 3.5 a 4.0) a když jsem chtěl udělat OnceClick instalaci tak jsem zjistil že při první instalaci se korektně nainstalují sdf soubory se kterými uživatel muže pracovat.

Vcelku logický problém vzniká v okamžiku kdy provedu aktualizaci (vytvořím vyšší verzi onceclick) opět se přenesou sdf soubory které tímto ale zničí dosavadní práci toho uživatele. 

Takže moje otázka zní jak vlastně zajistit aby ten onceclick tyto aktuální sdf soubory nepřepsal přesněji řečeno aby je nepřenášel.

Když jsem udělal zkoušku při které jsem tyto soubory exludnul tak se automaticky zrušily i u toho uživatele, takže zase problém.

Jak na to ????

A ještě jedna otazka jaký je rozdíl mezi Include a Include (auto) a obdobně jako u Data... a Data... (auto)

Dik za každou odpověď

Nahlásit jako SPAM
IP: 90.181.96.–
Manželka programátora pošle svého muže koupit chleba s dovětkem kdyby měly housky přines jich deset! Co přinese programátor??
Evzen+2
Návštěvník
19. 7. 2013   #2
-
0
-

Ahoj,

programově si při prvním spuštění překopíruj databázi sem:

Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData)

Tam si vytvoř nějakou svojí složku a pak se připojuj přímo sem. Tato speciální složka je zahrabaná v Documents & Settings\local\ blabla.. je to jiný dle systému a dokonce i lokalizace, ale každá aplikace tam má přístup pro čtení i zápis, takže nemusíš řešit oprávnění u uživatelů.

Jediný s čím budeš mít problém je, pokud změníš databázové schéma, tak ti to bude čumět na starou DB s původním schématem. Ale s tím už si zajisté poradíš.

Evžen

Nahlásit jako SPAM
IP: 193.179.183.–
VladislavK0
Super člen
19. 7. 2013   #3
-
0
-

#2 Evzen Jediný s čím budeš mít problém je, pokud změníš databázové schéma, tak ti to bude čumět na starou DB s původním schématem. Ale s tím už si zajisté poradíš.

Ano toto mě také napadlo a proto budu asi muset vymyslet nějakou rutinu pro zasynchronizování schematu vůči  uživatelským datům - tam zatím problém vcelku nevidím.

Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData) ale nenapadá mě jak to udělat v případě OnceClick instalace - update.

Zkus tu myšlenku prosím trochu rozvést - díky.

Nahlásit jako SPAM
IP: 90.181.96.–
Manželka programátora pošle svého muže koupit chleba s dovětkem kdyby měly housky přines jich deset! Co přinese programátor??
Evzen+2
Návštěvník
19. 7. 2013   #4
-
0
-

#3 VladislavK
Neřeš to během instalace - update, ale v rámci tvojí aplikace. Příklad:

Nainstaluješ si appku, ona se spustí, detekuje, že Environment.SpecialFolder.ApplicationData\MyBestApp\DiBi.sdf neexistuje, a tak ji prostě vezme z ApplicationFolder\DiBi.sdf a zkopíruje. Přepne se connectionString do SpecialFolder a spojí se. Následně aplikace porovná hodnotu verze databáze (např. v db si uděláš tabulku s nastavením, kde si mimo jiné uložíš i verzi té databáze) a porovná to s hodnotou, se kterou umí pracovat (to si uložíš třeba do app.configu).

Nyní zjistí, že verze je nižší než ta, se kterou umí pracovat a proto spustí sadu alter scriptů, které má připravené v ApplicationFolder\AlterScripts, aplikuje ji na databázi v SpecialFolder, dokud nedosáhne správné verze a pak vuala, spustí se appka.

A protože jsme profíci, použijeme BusyIndikátor (http://wpftoolkit.codeplex.com/wikipage?title=BusyIndicator&referringTitle=Documentation), nastavíme jej na Isbusy=true, použijeme BackgroundWorker pro upgradování databáze a na konci IsBusy=false.

Budeš mít pěknou samoupgradovací DB, s aplikací, která nezamrzne, ale bude informovat při prvním startu po updatu uživatele o upgradu DB. 

Jediný co, tak upgrady budeš muset řešit přes klasický SqlCeCommandy, a né EF, protože tam nebudeš mít původní schéma a ještě tě upozorním na jednu drobnost. SqlCE neumí spouštět skládané dotazy, takže kdyby sis natáhl obsah SQL skriptu (tak jak jej exportuje Management Studio, třeba), tak ti to lehne. 

Budeš to muset parsovat po příkazech (entery, středníky?) a pouštět postupně.

Toť vše :)

Hodně stěstí,

Evžen

Nahlásit jako SPAM
IP: 88.101.117.–
VladislavK0
Super člen
19. 7. 2013   #5
-
0
-

Jinými slovy ty po mě chceš abych ty sdf soubory de facto vyhodil z projektu potažmo z instalátoru, abych tyto při prvním spuštění programu vytvořil a pří následných updatech programu vlastně modifikoval.

No, to já ale nechci.

Výše popsané akce běžně praktikuji u SW který je připojen na nějaký robusní DTB stroj.

U tohoto prográmku bylo použito SqlCe pravě proto aby se mohly ty sdf soubory distribuovat prostřednictvím instalátoru - a takto funguje když použiji nějaky robusní instalator třeba INNO setup ve kterém vytvořím MujProgramInstall.exe a MujProgramUpdate.exe - potud je to OK 

Problém se objevil ve OnceClick který jsem na to zkusil použit a dle všeho to vypadá tak, že ten problém nemá řešení - dokonce i strejda google zarytě mlčí.

No každopádně díky

Nahlásit jako SPAM
IP: 37.48.44.–
Manželka programátora pošle svého muže koupit chleba s dovětkem kdyby měly housky přines jich deset! Co přinese programátor??
Řešení
Evžen
~ Anonymní uživatel
94 příspěvků
19. 7. 2013   #6
-
0
-
Vyřešeno Nejlepší odpověď

Tak jasný, sdf je binarka, tam to neodverzujes. I SVN trucuje už jen pokud otevřeš sdf pomoci management studia a nic v něm nezměníš.
sdf můžeš distribuovat pomoci instalátoru, ale při updatu ti to zkratka přemaže.
Nic, co by ti to samo udroalo neexistuje nebo o tom aspon nevím.

Evžen

Zasláno z mobilního telefonu.

Nahlásit jako SPAM
IP: 88.101.117.–
VladislavK0
Super člen
20. 7. 2013   #7
-
0
-

OK hotovo konec

Nahlásit jako SPAM
IP: 37.48.38.–
Manželka programátora pošle svého muže koupit chleba s dovětkem kdyby měly housky přines jich deset! Co přinese programátor??
Zjistit počet nových příspěvků

Přidej příspěvek

Toto téma je starší jak čtvrt roku – přidej svůj příspěvek jen tehdy, máš-li k tématu opravdu co říct!

Ano, opravdu chci reagovat → zobrazí formulář pro přidání příspěvku

×Vložení zdrojáku

×Vložení obrázku

Vložit URL obrázku Vybrat obrázek na disku
Vlož URL adresu obrázku:
Klikni a vyber obrázek z počítače:

×Vložení videa

Aktuálně jsou podporována videa ze serverů YouTube, Vimeo a Dailymotion.
×
 
Podporujeme Gravatara.
Zadej URL adresu Avatara (40 x 40 px) nebo emailovou adresu pro použití Gravatara.
Email nikam neukládáme, po získání Gravatara je zahozen.
-
Pravidla pro psaní příspěvků, používej diakritiku. ENTER pro nový odstavec, SHIFT + ENTER pro nový řádek.
Sledovat nové příspěvky (pouze pro přihlášené)
Sleduj vlákno a v případě přidání nového příspěvku o tom budeš vědět mezi prvními.
Reaguješ na příspěvek:

Uživatelé prohlížející si toto vlákno

Uživatelé on-line: 0 registrovaných, 7 hostů

Podobná vlákna

MS SQL Compact na webhostingu? — založil Radek Chalupa

SQL server — založil Pebble

MS SQL server — založil Drmota L

C++ & MS SQL server — založil lol

MS SQL SERVER SA HESLO — založil kironet

 

Hostujeme u Českého hostingu       ISSN 1801-1586       ⇡ Nahoru Webtea.cz logo © 20032024 Programujte.com
Zasadilo a pěstuje Webtea.cz, šéfredaktor Lukáš Churý