tag:blogger.com,1999:blog-3408745507091232422.post7465114705306872338..comments2023-03-05T06:57:23.320+01:00Comments on Robert Dresler: Princip jedné odpovědnostiRobert Dreslerhttp://www.blogger.com/profile/16401744220939465418noreply@blogger.comBlogger6125tag:blogger.com,1999:blog-3408745507091232422.post-59472620256953632722013-03-04T15:06:55.053+01:002013-03-04T15:06:55.053+01:00Ano, z kulturně-historicko-personálních důvodů. ;)...Ano, z kulturně-historicko-personálních důvodů. ;) Dřív mi to tolik nevadilo, ale už jsem v tomto ohledu trochu dospěl a anglicko-česká polévka mně přestala chutnat.<br />Robert Dreslerhttps://www.blogger.com/profile/16401744220939465418noreply@blogger.comtag:blogger.com,1999:blog-3408745507091232422.post-15176337390063800072013-03-04T12:54:06.408+01:002013-03-04T12:54:06.408+01:00Vážně používáte ve zdrojácích češtinu?Vážně používáte ve zdrojácích češtinu?Daniel Kolmanhttps://www.blogger.com/profile/12541334749939254340noreply@blogger.comtag:blogger.com,1999:blog-3408745507091232422.post-32739866029748152882012-08-29T23:28:52.710+02:002012-08-29T23:28:52.710+02:00Bohužel VisualBasic vůbec neznám :(
Metoda tr_mist...Bohužel VisualBasic vůbec neznám :(<br />Metoda tr_misto_DAO by mohla mít signaturu:<br />Public Sub Ulozit(Of T)(ByVal misto As tr_misto)<br />Pokud to děláte podle příkladu, tak DAO objekt by neměl implementovat IUloziste. Odkaz na tuto instanci dostane při vzniku, tzn. v konstruktoru.<br /><br />Můj příklad je dost abstraktní a předpokládá, že je inicializován persistentní framework, který umí sám uložit instance příslušných tříd, které jsou mapovány do databáze.Robert Dreslerhttps://www.blogger.com/profile/16401744220939465418noreply@blogger.comtag:blogger.com,1999:blog-3408745507091232422.post-60611520652613530182012-08-29T11:49:21.327+02:002012-08-29T11:49:21.327+02:00Děkuji Vám za odpověď, pokusil jsem se o implement...Děkuji Vám za odpověď, pokusil jsem se o implementaci, ale nedaří se mi v metodě "Uložit" pracovat s předanou třídou (tr_misto) - její vlastnosti nejsou přístupné.<br />Váš příklad jsem převáděl do VB, s C# nemám zkušenost.<br /><br />Zkoušel jsem zápis snad na tisíc způsobů, ale nedaří se mi ty vlastnosti zpřístupnit.<br /><br />Mohl byste mi napovědět, kde dělám chybu?<br /><br />Public Class tr_misto<br /><br /> Private ID As Integer<br /> Public Property _ID() As Integer<br /> Get<br /> Return ID<br /> End Get<br /> Set(ByVal value As Integer)<br /> ID = value<br /> End Set<br /> End Property<br /> Private nazev As String<br /> Public Property _nazev() As String<br /> Get<br /> Return nazev<br /> End Get<br /> Set(ByVal value As String)<br /> nazev = value<br /> End Set<br /> End Property<br /><br />End Class<br /><br /><br />Public Class tr_misto_DAO<br /> Implements IUloziste<br /><br /> Private uloziste As IUloziste<br /><br /> Private Shared csDB As String = ConfigurationManager.ConnectionStrings("csDB").ToString<br /><br /> Public Sub New(uloziste As IUloziste)<br /> Me.uloziste = uloziste<br /> End Sub<br /><br /> Public Sub Ulozit(Of tr_misto)(ByVal misto As tr_misto) Implements IUloziste.Ulozit<br /> Dim vysledek As String<br /> Dim conn As SqlConnection = New SqlConnection(csDB)<br /> Dim cmd As SqlCommand = New SqlCommand("spx_misto_INSERT", conn)<br /> Try<br /> With cmd<br /> .CommandType = System.Data.CommandType.StoredProcedure<br /> .Parameters.AddWithValue("@ID", misto._ID)<br /> .Parameters.AddWithValue("@Nazev", misto._nazev)<br /> End With<br /><br /> conn.Open()<br /> vysledek = cmd.ExecuteScalar()<br /> Catch e As Exception<br /> Finally<br /> conn.Close()<br /> End Try<br /> End Sub<br /><br /><br /> Interface IUloziste<br /> Sub Ulozit(Of T)(objekt As T)<br /> End Interface<br /><br />End Class<br /><br /><br /><br />Děkuji, Vladimír HálaAnonymousnoreply@blogger.comtag:blogger.com,1999:blog-3408745507091232422.post-80902211382810040972012-08-26T20:08:42.253+02:002012-08-26T20:08:42.253+02:00Děkuji Vladimíre za přečtení a připomínku.
Implem...Děkuji Vladimíre za přečtení a připomínku.<br /><br />Implementace UzivatelDao uvedená v příkladu by se při přidání atributu opravdu nemusela měnit. Sama totiž nezná mapování vlastností uživatele na databázové sloupce a pouze volá metodu IUloziste.Ulozit().<br /><br />IUloziste může být implementováno jako wraper pro NHibernate nebo nějaký jiný persistentní framework. V případě NHibernate je potřeba při inicializaci předat O/R mapovací pravidla (xml nebo Fluent NHibernate). Tzn. přidání atributu změní tuto mapovací definici. Ne však implementaci UzivatelDao.<br /><br />Může samozřejmě dojít k tomu, že třídu UzivatelDao naimplementujete tak, že bude přímo zapisovat do hodnot nějaké struktury v úložišti. Ale IMHO je to méně přehledné a tím pádem hůře udržovatelné, než dát O/R mapování zvlášť. Pokud navíc využíváte pro O/R mapovací pravidla generování z logického modelu, je oddělení do samostatné třídy (souboru) ještě více vhodné. Robert Dreslerhttps://www.blogger.com/profile/16401744220939465418noreply@blogger.comtag:blogger.com,1999:blog-3408745507091232422.post-3878590462287579952012-08-26T10:43:33.460+02:002012-08-26T10:43:33.460+02:00Dobrý den,nerozumím této části:
Robustnost - ovli...Dobrý den,nerozumím této části:<br /><br />Robustnost - ovlivnění pouze třídy, kt. se týkají, ale UzivatelDAO nebude zasažena.<br /><br />Copak není při změně vlastností třídy, kt. jsou i v DB, současně upravit i třídu, která ty vlastnosti do DB ukládá?<br /><br />Jakpak by se to stalo?<br /><br />(př.)<br />třída Uživatel - vlastnosti Jméno, Příjmení...<br />třída ukládající Uživatele - <br /> ...<br /> cmd.Parameters.AddWithValue("@jmeno", _jmeno)<br /> cmd.Parameters.AddWithValue("@prijmeni", _prijmeni)<br /> ...<br /><br />a pokud upravím Uživatel, tak je třeba upravit i ukládání..<br /><br />Vladimír HálaAnonymousnoreply@blogger.com