| | |
| Stránka: 1 z 1
| [ Príspevkov: 8 ] | |
Autor | Správa |
---|
Registrovaný: 04.12.08 Prihlásený: 16.12.10 Príspevky: 59 Témy: 10 |
Dá sa nejako pomocou napr. Singletonu spraviť, aby sa mi po spustení aplikácie otvorilo spojenie na Oracle DBS, a po skončení uzavrelo?
Myslím,žeby mi to určite zrýchlilo aplikáciu, keďže by sa pri dotazoch nemusel stále otvárať spojenie atď.
Poprosil by som konkrétny kus kódu...skúšal som to nejako takto...
Kód: private static OracleConnection connection = new OracleConnection(oradb); private DatabaseControl() { connection.Open(); }
public static DatabaseControl Instance { get { if (instance == null) { instance = new DatabaseControl(); } return instance; } }
No ale keď som potom z jednej metódy vymazal using (connection = new OracleConnection(oradb))
{ ... }, resp. len using(connection) tak to nešlo...:/
Viete mi pomôcť?
_________________ Robím, čo možem. Keď nerobím, nemožem. |
|
Registrovaný: 26.09.07 Prihlásený: 06.06.10 Príspevky: 53 Témy: 7 Bydlisko: Zákopčie, K... |
Tak v prvom rade ked pouzijes using bez vytvorenia novej instancie tak po konci oboru platnosti definovaneho usingom sa automaticky pre ten objekt vola garbage collector a objekt ti zrusi.
To ale len tak pomimo. Osobne by som totiz urcite neriesil pripajanie na DB cez singleton. Pripojenie na databazu a odpojenie netrva zas tak dlho ako si ty predstavujes a ked uz by si to chcel optimalizovat tak optimalizuj len pripojenia v ramci nejakej aktivity (myslim tymsubor cinnosti medzi dvoma vstupmy od uzivatela) ale nie pocas behu celej aplikacie. Nech sa vyjadri aj niekto iny ale podla mna je to blbost.
Neviem aku velku aplikaciu mas ale pokial si myslis ze kvoli DB pocitujes zmenu vykonu tak by si sa mal skor zamerat na optimalizaciu databazy a poctu pripojeni a nie riesit to takymto "hackom".
Ale je to len moj nazor.
_________________ Život by bol jednoduchší, keby sme k nemu mali zdrojový kód! |
|
Registrovaný: 20.07.08 Príspevky: 474 Témy: 1 Bydlisko: Kosice | |
Registrovaný: 04.12.08 Prihlásený: 16.12.10 Príspevky: 59 Témy: 10 | Napísal autor témy dEVIANT: 03.04.2010 0:14 | |
|
Normále každý dotaz začína using connection...
Ezekiell, ten server je škólsky pre všetkých študentov...takže to bude asi v tom...
_________________ Robím, čo možem. Keď nerobím, nemožem. |
|
Registrovaný: 26.09.07 Prihlásený: 06.06.10 Príspevky: 53 Témy: 7 Bydlisko: Zákopčie, K... |
A mas predstavu alebo odhad kolko krat sa aplikacia pripaja medzi jednotlivymi vstupmi uzivatela?
Myslim ze ked budes pouzivat
using (connection = new OracleConnection(oradb)) tak nemas problem.
_________________ Život by bol jednoduchší, keby sme k nemu mali zdrojový kód! |
|
Registrovaný: 15.05.10 Prihlásený: 21.06.10 Príspevky: 1 Témy: 0 | Napísal nordic: 29.05.2010 3:42 | |
|
Co takto toto ? CommandBehavior.CloseConnection hned po execute.
Kód: public override DbDataReader GetCokolvek() { const string sqlString = @"SELECT [id] id, [name] text FROM dbo.countries (NOLOCK)";
Database.DatabaseConnection conn = DataLayer.DbContext.GetConnection(); using (DbCommand dbc = conn.CreateCommand(sqlString.ToString(), System.Data.CommandType.Text)) { return dbc.ExecuteReader(System.Data.CommandBehavior.CloseConnection); } }
|
|
Registrovaný: 10.07.09 Prihlásený: 14.01.13 Príspevky: 28 Témy: 3 | Napísal TJ: 21.06.2010 15:14 | |
|
No ja by som to urcite robil cez Singleton. V konstruktore otvoris spojenie a zabit ti to staci az uplne na konci programu, cez nejaku metodu Close().
|
|
Registrovaný: 04.12.08 Prihlásený: 16.12.10 Príspevky: 59 Témy: 10 | Napísal autor témy dEVIANT: 24.06.2010 13:46 | |
|
Dík za rady... riešim to ako odpojenú aplikáciu...teda sa zmeny v DBS neprejavu hneď ale až po uložení.
_________________ Robím, čo možem. Keď nerobím, nemožem. |
|
| Stránka: 1 z 1
| [ Príspevkov: 8 ] | |
| Nemôžete zakladať nové témy v tomto fóre Nemôžete odpovedať na témy v tomto fóre Nemôžete upravovať svoje príspevky v tomto fóre Nemôžete mazať svoje príspevky v tomto fóre
|
|