Author Archives: Robert Haken

avatar Neznámé

About Robert Haken

Software Architect, Founder at HAVIT, Microsoft MVP - ASP.NET/IIS

No Entity Framework provider found for the ADO.NET provider with invariant name ‚System.Data.SqlClient‘.

Pokud ve Vaší aplikaci používáte Entity Framework, který však nemáte “nainstalován” (NuGet package) v prezentační/komunikační vrstvě, ale jste od něj odstíněni prostřednictvím nějakého jiného projektu nebo referencované assembly (obvykle skrz Repository), můžete se dočkat poměrně triviální chyby:

InvalidOperationException:

No Entity Framework provider found for the ADO.NET provider with invariant name ‚System.Data.SqlClient‘. Make sure the provider is registered in the ‚entityFramework‘ section of the application config file. See http://go.microsoft.com/fwlink/?LinkId=260882 for more information.

Protože při Googlení můžete narazit na různé zcestné rady typu “nainstalujte si do projektu Entity Framework” (což tedy pomůže, ale je to holý nesmysl), připomínám, že ač se to zná neuvěřitelné, v první řadě je potřeba udělat přesně to, co text výjimky říká – tedy přidat do konfiguračního souboru (web.config, app.config) sekci entityFramework a do ní providera.

<?xml version="1.0" encoding="utf-8"?>
<configuration>
  <configSections>
    <section name="entityFramework" type="System.Data.Entity.Internal.ConfigFile.EntityFrameworkSection, EntityFramework, Version=6.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" requirePermission="false" />
  </configSections>
  <entityFramework>
    <providers>
      <provider invariantName="System.Data.SqlClient" type="System.Data.Entity.SqlServer.SqlProviderServices, EntityFramework.SqlServer" />
    </providers>
  </entityFramework>
</configuration>

…ona teda instalace celého Entity Frameworku NuGet package by to za vás udělala taky, ale…

.NET Internals 3/3 – Advanced Debugging Techniky – záznam, slides a dema [TechEd Praha 2014]

Dema a slides z mé přednášky pro Gopas TechEd DevCon Praha 2014:

Třetí ze série přednášek:

Z přednášky jsem pořizoval záznam, který najdete na našem HAVIT YouTube Channelu:

.NET Internals 2/3 – Heap, Garbage Collector – záznam, slides a dema [TechEd Praha 2014]

Dema a slides z mé přednášky pro Gopas TechEd DevCon Praha 2014:

Druhá ze série přednášek:

Z přednášky jsem pořizoval záznam, který najdete na našem HAVIT YouTube Channelu:

.NET Internals 1/3 – Paměť a datové typy – záznam, slides a dema [TechEd Praha 2014]

Dema a slides z mé přednášky pro Gopas TechEd DevCon Praha 2014:

První ze série přednášek:

Z přednášky jsem pořizoval záznam, který najdete na našem HAVIT YouTube Channelu:

SQL Server Performance – Execution Plans – záznam, slides a dema [TechEd Praha 2014]

Dema a slides z mé přednášky pro Gopas TechEd DevCon Praha 2014 – inovovaná podoba přednášky, kterou jsem již dělal pro MS Fest (skoro stejné) nebo WUG Praha (asi nejlepší plná verze bez časové tísně, ale zas má něco přes tři hodiny):

Z přednášky jsem pořizoval záznam, který najdete na našem HAVIT YouTube Channelu, tato podoba má ze tří možných asi nejkvalitnější záznam (720p screenrec):

Camtasia Studio: Načtení .m4a souboru

Hledal jsem to dneska už poněkolikáté, tedy pro blbého Hakena si to tímto poznamenávám…

Soubor .m4a, který mi vyrobí Apple iTunes konverzí (Create AAC version) z .wav (původem z Rode Rec) stačí přejmenovat na .mp3 a Camtasia Studio již ho načte. Mělo by to být obecně možné u .m4a souborů bez DRM.

SQL 2014 LocalDB: Instance “v12.0” není automaticky založena (50 – Local Database Runtime error occurred. The specified LocalDB instance does not exist.)

Mám na počítači čerstvou instalaci SQL Serveru 2014 (včetně LocalDB) a hraju si s Entity Frameworkem 6.1.0, Výchozí konektivitou je “(localdb)\v12.0” a dostávám krásnou chybu:

System.Data.Entity.Core.ProviderIncompatibleException, but exception System.Data.Entity.Validation.DbEntityValidationException was expected. Exception message: System.Data.Entity.Core.ProviderIncompatibleException: An error occurred accessing the database. This usually means that the connection to the database failed. Check that the connection string is correct and that the appropriate DbContext constructor is being used to specify it or find it in the application’s config file. See http://go.microsoft.com/fwlink/?LinkId=386386 for information on DbContext and connections. See the inner exception for details of the failure. —> System.Data.Entity.Core.ProviderIncompatibleException: The provider did not return a ProviderManifestToken string. —> System.Data.SqlClient.SqlException: A network-related or instance-specific error occurred while establishing a connection to SQL Server. The server was not found or was not accessible. Verify that the instance name is correct and that SQL Server is configured to allow remote connections. (provider: SQL Network Interfaces, error: 50 – Local Database Runtime error occurred. The specified LocalDB instance does not exist.)

Po chvilce bojů zjišťuji, že SQL Server 2014 LocalDB má v sobě ?bug?, a to že nezaloží automaticky instanci “v12.0”, ač to o sobě v dokumentaci tvrdí a EntityFramework to očekává: https://connect.microsoft.com/SQLServer/feedback/details/845278/sql-server-2014-express-localdb-does-not-create-automatic-instance-v12-0

Řešení je naštěstí poměrně snadné, z Command Promptu stačí instanci vytvořit:

sqllocaldb create v12.0 12.0

…a hrátky s Entity Frameworkem mohou pokračovat. ;-)

Update: Test/Build Server

Pozor, že na test/build serveru, kde se budou pouštět unit-testy, je potřeba instanci založit pod účtem, který testy pouští. Instance LocalDB nejsou sdíleny mezi účty, není-li explicitně nastaveno jinak (a pozor, že prostý „sqllocaldb share v12.0 v12.0“ ve skutečnosti nasdílí instanci pod názvem „.\v12.0“, nikoliv „v12.0“).

Visual Studio: Jak vypnout v Solution Exploreru rozbalování souborů (na třídy)

Pokud, stejně jako já, považujete možnost Solution Exploreru rozbalit strom souborů až na úroveň obsahu těchto souborů (na třídy, jejich membery, atp.), tuto funkci lze vypnout:

image

Buď si můžete nainstalovat VSCommands a použít volbu “Disable Graph Provider” nebo stačí toto nastavení v registrech (v Options Visual Studia to nenajdete):

Windows Registry Editor Version 5.00

[HKEY_CURRENT_USER\Software\Microsoft\VisualStudio\12.0]
"UseSolutionNavigatorGraphProvider"=dword:00000000

…verzi Visual Studia samozřejmě upravit dle potřeby, prý to funguje už od VS2012 (11.0).

Update VS2015:

Funguje i pro VS2015, jen na konci cesty v registrech je verze 14.0.

Update VS2017:

VS 2017 navíc používá privátní registry pro každou instalovanou instanci. Je potřeba tedy najít příslušný soubor privateregistry.bin na disku a připojit do regedit do HKEY_USERS pomocí File / Load Hive… (na zvoleném jméně nezáleží). V připojené registry pak klíč přidáme a zase musíme dát Unload Hive…

Vybírám notebook V. – Dva měsíce s Lenovo ThinkPad T440s a Win8.1

Po dvou měsících práce posílám završení své anabáze výběru nového notebooka:

Shrnu to asi nejprve konstatováním, že notebook je to velmi dobrý a více problémů mi způsobují Windows 8.1, než hardware samotný.

Pozitiva

  • kvalitní provedení – Bytelný, dobře dílensky zpracovaný, líbivý (subjektivně).
  • pro mě ideální poměr velikosti (14”, ultrabook form), výbavy (3xUSB, RJ-45, VGA, mini-DP, dock) a váhy (cca 1,6kg)
  • dobrý display – Z X230 jsem byl zvyklý na IPS a tohle je analogie, bojuju jen trochu s rozlišením, viz níže.
  • velký a relativně rychlý disk – Je v tom OEM verze Samsung 842 a točí cca 500/350 MB/s. Velikost 512 GB.
  • použitelný touchpad – Drnčivý clicko-stisk s výjimkou drag&drop prakticky nepoužívám a jinak je to velmi použitelné (MBA to sice není, ale to už je víc problém SW a Windows, než HW).
  • výkon – Nahradil jsem tímto strojem svůj původní desktop. PC jsem prostě zrušil a používám už jenom notebooka. Měl jsem dost nabitý stroj a přesto rozdíl prakticky nepoznám (OK, renderování videa z Camtasie možná trvá o chvilku déle, ale jinak není co řešit.)
  • reproduktory – Nenapadlo by mě, že bych to vůbec kdy měl řešit, ale ve srovnání s notebooky, co jsem kdy měl, tak tenhle dokáže svými reproduktorky (ve spojení s Dolby utilitou) vyluzovat nečekaně dobrý zvuk.
  • čtečka otisků prstů – Čtečka je sice mnohem spolehlivější (méně bezpečná? neumím posoudit) než ta z X230. Na druhou stranu neumí notebook zapnout/vzbudit, což bylo na X230 dobré.
  • kompaktní provedení (panty displaye) – Ještě jsem sice od té doby neletěl letadlem, ale jinak jsem zatím nikde nezaznamenal, že bych se někam nevešel. Díky nižšímu usazení pantů a otevírání za šasi je notebook poměrně kompaktní.

Negativa

  • Full HD – Windows prostě nemají dobře vyřešeno škálování UI a pro mě je neškálované FullHD moc malé. Používám tedy střední velikost pro panel notebooku (odpovídá cca 125%) a velikost Smaller (100%) při zadockování k monitoru. Průšvih je, že Windows 8.1 se neumí s přechodem mezi těmito režimy dobře vypořádat, aniž bych se musel pokaždé odhlásit a znovu přihlásit. Takže se jak pako přihlašuji a odhlašuji kdykoliv jdu od pracovního stolu do zasedačky, domů, nebo kamkoliv jinam (a stejně tak když se vrátím). Pokud by se dělala verze s IPS v HD+, pak bych asi preferoval tu.
  • výdrž baterie – Od high-end stroje s Haswellem bych čekal více, než že bude bojovat v pásmu 4-5 hodin. Je to asi dáno tím, že má jen dvě relativně slabé baterie o celkové kapacitě 46Wh. Vydrží mi tedy zhruba stejně, co předchozí X230 s tuším 64Wh baterií.
  • dockování – Ve srovnání s X230 a jeho bundlovaným dockem se T440s do ThinkPad Pro Docku zatraceně blbě dává. Prakticky nikdy se netrefím na první pokus a různě s tím musím vekslovat, aby to do sebe zapadlo. Možná jsem jen nechytil ještě správný grif, ale je to otravné.
  • SW výbava – Nepoužíval jsem toho sice od Lenova mnoho, ale třeba takový Power Manager mi chybí. Nemám prostě důvěru, že Windows 8.1 pracují s napájením tak, jak by šlo. Nevidím třeba nikde volbu výkonového režimu procesoru při práci na baterie nebo s napájením, atp. (ale možná to prostě funguje a není potřeba řešit). Každopádně jsou na tom pořád lépe Win7 než Win8, co se driverů a toolingu týče.
  • výše posazená klávesnice – Vadí mi občas pásek od hodinek (zachytávám se, cvaká), což jsem nikdy jinde nepozoroval. Jinak, jak tu už někdo zmiňoval v diskuzi, mezerník se obtiskává na display, ale nijak výrazně a při běžné frekvenci čištění ho prakticky nepozoruji.

Pokud bych měl shrnout zkušenosti s Windows 8.1, tak bych asi řekl “Po potlačení Metro-modu a instalaci Start8 dobré, ještěže jsem přeskočil Win8.” Hlavním problémem je asi to škálování UI na různých rozlišeních a pak otravné Metro-novinky, které mi tam po všem vykosťování zbyly (zejména připojování k sítím).

CrashPlan: Zálohování síťových složek

Používám pro zálohování mimo jiné CrashPlan+, který odlévá určené soubory do svého cloudového uložiště včetně verzování. Na rozdíl od SkyDrive, Dropbox nebo Google Drive je toto plnohodnotná zálohovací služba, drobnou slabinou však je, že nepodporuje zálohování ze síťových složek, ale jenom z lokálních disků.

Dá se to naštěstí napravit jednoduchým trikem – přes symbolické linky z lokálního disku na síťové složky:

  1. Vytvořím si na disku zastřešující složku, dejme tomu D:\BackupLinks.
  2. Vytvořím do příslušné složky symbolické linky na síťové složky, které chci zálohovat:
    mklink /D FolderName \\ServerName\FolderName
    
  3. Přenastavím lokální službu CrashPlan Backup Service, aby běžel pod uživatelským účtem, který má přístupová práva na všechny zálohované soubory (lokální i síťové).
  4. Restartuju službu.
  5. Nastavím CrashPlan, aby zálohoval složku D:\BackupLinks a zkontroluju, že si soubory načte a začne sypat do uložiště.

…hotovo.