Co mě opravdu štve na Entity Frameworku

Tomáš Herceg       11. 5. 2012       SQL, Offtopic, Databáze       6192 zobrazení

Ne, nehádáte správně, není to generování zbytečně složitých dotazů, neefektivní hromadné úpravy a mazání dat, i když ano, to mě samozřejmě štve taky, ale dá se to řešit pohledy a uloženými procedurami na straně SQL Serveru.

Pokud si EDMX soubor otevřete a pozorně prohlédnete, narazíte tam na toto (pokud jedete proti velkému SQL Serveru):

 <?xml version="1.0" encoding="utf-8"?>
<edmx:Edmx Version="2.0" xmlns:edmx="http://schemas.microsoft.com/ado/2008/10/edmx">

<edmx:Runtime>
<edmx:StorageModels>
<Schema Namespace="" ProviderManifestToken="2008" Alias="Self" Provider="System.Data.SqlClient" …

Aplikaci vyvíjíme na SQL Serveru 2008, ale u zákazníka na produkčním serveru běží SQL Server 2005. Ten vyznačený atribut určuje, jestli se smí použít nové datové typy a vymoženosti ze SQL 2008, např. DATETIME2. Aplikace, kde je v EDMX toto, nepojede proti SQL Serveru 2005 a při nejbližší příležitosti spadne.

Můžete to upravit ručně na 2005, ale pokud během vývoje ve Visual Studiu dáme aktualizovat model podle databáze (naší, vývojové, na SQL Serveru 2008), tak se nám samozřejmě tento atribut vždy přepíše na 2008.

 

Dobré pravidlo zní – automatizujte vše, co automatizovat jde. Nerad bych na to před nějakým releasem zapomněl a nasadil na server nefunkční verzi, takže si pomůžeme Pre Build steps v projektu, který EDMX soubor obsahuje.

"$(SolutionDir)..\..\lib\_tools\Riganti.Utils.SetEdmxVersion.exe" "$(ProjectDir)DbModel.edmx" 2005

A aplikace, která se o toto postará, je zde – dávám jí k dispozici včetně zdrojáků pod licencí “dělejte si s tím co chcete, podporu poskytuji jen když se mi bude chtít”.

 

hodnocení článku

0       Hodnotit mohou jen registrované uživatelé.

 

Nový příspěvek

 

Diskuse: Co mě opravdu štve na Entity Frameworku

Stáhnul jsem si ten nástroj protože jsem doufal, že bych tam mohl najít věc, po které už chvíli pátrám a kterou bych chtěl přidělat do mého velmi podobného nástroje VersionChanger.

Jedná se o to, že pokud se nějaký program přidá do Post(Pre)-build události, tak pokud v tomto programu dojde k vyjímce, nebo nějakému jinému chybovému stavu, je nějakým způsobem možné toto zobrazit přímo ve Visual Studiu, konkrétně v okně Error List. Zobrazí se to tam jako nová položka s bílým X v červeném kolečku. Nějak to jít musí, dělá to třeba Babel Obfuscator (.NET konzolová aplikace řízená předanými parametry). Kdybyste věděl jak to udělat, bylo by to skvělé.

Console.WriteLine, Debug.WriteLine ani vyhození vyjímky se zprávou nefunguje, taktéž Environment.FailSafe.

nahlásit spamnahlásit spam 0 odpovědětodpovědět

Už jsem na to přišel. Výstupní zpráva musí být v určitém formátu:

Module Module1
  Sub Main()
    Dim file = "C:\Projects\Module1.vb"
    'Hodnota category může být buď Error nebo Warning
    Dim category = "Error"
    Dim exitCode = 1
    Dim message = "Soubor je pouze pro čtení."
    Dim output = String.Format("{0}: {1} {2}: {3}", _
                               file, _
                               category, _
                               exitCode, _
                               message)
    Environment.ExitCode = exitCode
    Console.WriteLine(output)
  End Sub
End Module

Výsledek po provedení kompilace (nastaveno v Post-build události):

http://ondrej.aspone.cz/Projects/ErrorLi...

nahlásit spamnahlásit spam 1 / 1 odpovědětodpovědět

Možná byste to mohl hodit do sekce Snippety, někomu by se to mohlo hodit a tam to půjde lépe najít.

nahlásit spamnahlásit spam 2 / 2 odpovědětodpovědět

Diskuse: Co mě opravdu štve na Entity Frameworku

Aplikaci sice zatím nepotřebuji, ale výborná licence, fakt mě to pobavilo.

nahlásit spamnahlásit spam 2 / 2 odpovědětodpovědět
                       
Nadpis:
Antispam: Komu se občas házejí perly?
Příspěvek bude publikován pod identitou   anonym.

Nyní zakládáte pod článkem nové diskusní vlákno.
Pokud chcete reagovat na jiný příspěvek, klikněte na tlačítko "Odpovědět" u některého diskusního příspěvku.

Nyní odpovídáte na příspěvek pod článkem. Nebo chcete raději založit nové vlákno?

 

  • Administrátoři si vyhrazují právo komentáře upravovat či mazat bez udání důvodu.
    Mazány budou zejména komentáře obsahující vulgarity nebo porušující pravidla publikování.
  • Pokud nejste zaregistrováni, Vaše IP adresa bude zveřejněna. Pokud s tímto nesouhlasíte, příspěvek neodesílejte.

přihlásit pomocí externího účtu

přihlásit pomocí jména a hesla

Uživatel:  
Heslo:  

zapomenuté heslo

 

založit nový uživatelský účet

zaregistrujte se

 
zavřít

Nahlásit spam

Opravdu chcete tento příspěvek nahlásit pro porušování pravidel fóra?

Nahlásit Zrušit

Chyba

zavřít

feedback