CSLA: RootEditable template update
Tak jsem se trochu vrtal v šablonách a upravil jsem použití transakce a pár jiných drobností. Zdroják viz níže.
Původní způsob použití v minulém příspěvku je stále platný a funkční. Na zde zmiňovaném způsobu použití transakce se mi líbilo využití USING klausule, která provede automaticky Dispose. Chci jen upozornit na jednu chybu, viz zkrácená verze SqlException:
XXX.YYYY.UnitTest.Diary.TDiarySportItem.T1Insert : Csla.DataPortalException :
DataPortal.Update failed (System.Data.SqlClient.SqlException: MSDTC on server
'JUDELL\SQLEXPRESS' is unavailable. at
System.Data.SqlClient.SqlConnection.OnError(SqlException exception, Boolean
breakConnection)
Chyba se vyskytla po použití objektu TransactionScope. Hledal jsem na googlu a našel jsem například toto nebo toto. Řešením je zajistit automatické spuštění služby Distributed Transaction Coordinator. Služba je velmi pravděpodobně nastavena na Manuál a není spuštěna. Další možností je nastavení několika vlastností ve vlastnostech MSDTC. Většinou jde o nastavení pro povoleni vzdálené komunikace a přístupu klienta na server. Nastavení pro MSDTC je dostupné zde:
1. Start->Nástroje pro správu->Component Services
2. pokračujte do Služba komponent service->Počítače->Můj počítač
3. Otevřete kontextové menu na Můj počítač a vyberte Vlastnosti
4. Vyberte MSDTC záložku a zde klikněte na tlačítko Bezpečnost (Security)
A zde je zdrojový kód šablony pro EditableRoot objekt.