Upgrading to EF6   otázka

C#, ASP.NET WebForms

Dobry den,

pouzivam v jednom projekte tiedu Entity5DataSource a po aktualizacii z EF5 na EF6 mi vypisuje chzbovu hlasku:Cannot implicitly convert type 'System.Data.Entity.Core.Objects.ObjectContext'

Zmenil som vsetky referencie ako pisu v clanku: http://msdn.microsoft.com/en-US/data/dn4...

ale napriek vsetkym pokusom to nejde.

Viete mi s tym pomoct?

Poznate nejaky nastroj co mi premigruje cely project bezbolestne na EF6?

Dakujem


using System;
using System.Web.UI.WebControls;
using System.Data.Entity.Infrastructure;
using System.Data.Entity;


	public class Entity5DataSource : EntityDataSource
	{
		protected override void OnInit(EventArgs e)
		{
			base.OnInit(e);
			ContextCreating += Entity5DataSource_ContextCreating;
			EnableFlattening = false;
		}

		void Entity5DataSource_ContextCreating(object sender, EntityDataSourceContextCreatingEventArgs e)
		{
			if (ContextType == null)
				return;

			var context= (DbContext) Activator.CreateInstance(ContextType);
			e.Context = ((IObjectContextAdapter)context).ObjectContext;
		}
	}
nahlásit spamnahlásit spam 0 odpovědětodpovědět

Na tu bezbolestnou migraci je dobrý https://www.nuget.org/

Používáš to?

Přesně o tyhle věci by se měl postarat.

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

to by som nepovedal pri migracii na EF6 to je tak strasne jednoduche, mas dve moznosti:

1. zadanim Install-Package EntityFramework kde sa ti predchadzajuca verziu odinstajuje a EF6 nainstaluje.

2. Uninstall-Package EntityFramework kde si odstrani aktualnu verziu, mozes odstranit nejake zvysky codu co ostal, Clean a opat Install-Package EntityFramework.

Nasledne ta caka procedura premenovania using z dovodu zmien namespace a rozne chybove hlasky pri kompilacii.....

EF 6 som sa rozhodol pouzivat od vcera a mam taky pocit ze to nebol dobry napad....

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

Postup pro upgrade na EF6 je na http://msdn.microsoft.com/en-US/data/upg....

Zkuste podle tohoto postupu aktualizovat model a zkontrolujte reference na EF6 knihovnu System.Data.Entity.dll.

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

No pozor, System.Data.Entity obsahuje starou verzi EF4, novější verze jsou v assembly EntityFramework.dll, ne?

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

Jj napsal jsem to blbě. Je potřeba zkontrolovat, že reference na System.Data.Entity.dll je odstraněná, a zkontrolovat že ostatní knihovny jsou verze EF6.

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

zdravim, spravil som presne vsetko podla postupu z linku a pise mi stale dve chybove hlasky:Prva(pre e.Context): The type 'System.Data.Objects.ObjectContext' is defined in an assembly that is not referenced. You must add a reference to assembly 'System.Data.Entity, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089'.

Druha(((IObjectContextAdapter)context).ObjectContext): Cannot implicitly convert type 'System.Data.Entity.Core.Objects.ObjectContext' to 'System.Data.Objects.ObjectContext'

Viete mi poradit preco alebo ako mam prepisat cod?

Dakujem

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

Tak vám někde zůstal použitý starý namespace System.Data.Objects.ObjectContext, který je potřeba zaměnit na System.Data.Entity.Core.Objects.ObjectContext.

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

ten vystavuje EntityDataSourceContextCreatingEventArgs v object context-e.

// Summary:

// Gets the System.Data.Objects.ObjectContext that is used by the data source.

//

// Returns:

// The object context that is used by the data source.

public System.Data.Objects.ObjectContext Context { get; set; }public System.Data.Objects.ObjectContext Context { get; set; }

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

Pokud se jedná o generovaný kód EF Designera, tak ten je potřeba updatovat viz. bod 3:Swap any EF Designer (EDMX) models to use EF 6.x code generation.

To jste dělal?

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

Proč je to tak "složité"? V čem je problém?

Slyšel jsem něco o vyčlenění EF z knihoven .NETu. Je to i tím?

nahlásit spamnahlásit spam 0 odpovědětodpovědět
                       
Nadpis:
Antispam: Komu se občas házejí perly?
Příspěvek bude publikován pod identitou   anonym.
  • 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