Strona główna > .NET > Dzień bez błędu Entity Framework dniem straconym–dziś HRESULT 2146233079

Dzień bez błędu Entity Framework dniem straconym–dziś HRESULT 2146233079

Niezwykle udana nocka przy migracji PlaceChallenge z EF 4 na 5 zaowocowała porannym uderzeniem jak grom z jasnego nieba… w postaci HRESULT 2146233079.

return ((IObjectContextAdapter)this).ObjectContext.ExecuteFunction<GameInfo_DataDomain>("GetGameInfoById", gameIdParameter);
System.InvalidOperationException was unhandled by user code
  HResult=-2146233079
  Message=Wartość właściwości EntityCommand.CommandText jest nieprawidłowa dla polecenia StoredProcedure. Wartość EntityCommand.CommandText musi mieć formę „ContainerName.FunctionImportName”.
  Source=System.Data.Entity

Błędy tego typu strasznie źle mi się kojarzą.. z jakimś złym COM/OLE/C++ I tym podobnym dziwom – a ja przecież jestem w C# jakby zapominając, że dalej jestem w Windows.

Po kilku godzinach mozna powiedzieć, że rozwiązanie proste jak drut.

Entity Framework by działać potrzebuje mieć poprawnie skonstruowany ConnectionString, który jest trochę bardziej skomplikowany od takiego zwykłego znanego z ADO.NET.

<connectionStrings>
    <add name="placechallenge_getchi_prodEntities" connectionString="metadata=res://*/DataModel.csdl|res://*/DataModel.ssdl|res://*/DataModel.msl;provider=System.Data.SqlClient;provider connection string="data source=XXXX;initial catalog=XXX;persist security info=True;user id=XXX;password=XXX" providerName="System.Data.EntityClient" />
  </connectionStrings>


Tłumacząc z języka Microsoftu na Nasz… mamy nazwę, metadane I informacje o serwerze I technologii dostępowej.

  • Nazwa – wiadomo, nie trzeba tłumaczyć mam nadzieję
  • Technologia dostępowa – tutaj SQLServer
  • Informacje o serwerze – loginy, hasła, adres do serwera, nazwa bazy danych
  • Metadane… to jest właśnie winowańca całej sprawy. W momencie wygenerowania modelu na podstawie bazy dostajemy gratis trzy pliki, jeden mapuje aktualny stan obiektów stworzonych przez EF, drugi ma spisane jak wyglada baza (tabele, kolumny, procedury, parametry), a trzeci mapuje jedno w drugie.

 

U mnie było nawiązanie do starych plików, nie nowych… I ot to mamy błąd HRESULT.

Kategorie:.NET Tagi: ,
  1. Brak komentarzy.
  1. No trackbacks yet.

Skomentuj

Wprowadź swoje dane lub kliknij jedną z tych ikon, aby się zalogować:

Logo WordPress.com

Komentujesz korzystając z konta WordPress.com. Log Out / Zmień )

Zdjęcie z Twittera

Komentujesz korzystając z konta Twitter. Log Out / Zmień )

Facebook photo

Komentujesz korzystając z konta Facebook. Log Out / Zmień )

Google+ photo

Komentujesz korzystając z konta Google+. Log Out / Zmień )

Connecting to %s

%d blogerów lubi to: