none
error al actualizar EF RRS feed

  • Pregunta

  • he actualizado mi proyecto de la version 5 del EF a la version 6 y ahora me salen estos errores al ejecutar mi aplicacion nos obstante al compilar no aparece ninguna advertencia

    System.InvalidOperationException was unhandled by user code
      HResult=-2146233079
      Message=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.
      Source=Sipos.Bussines
      StackTrace:
           en Sipos.Bussines.BlUsuarioCondicion.UCondicionTodos() en d:\1. Informatica\1. Programacion\1. DESARROLLO\APP SOURCE\Windows\PUNTO DE VENTA\Comercio\Sipos\Sipos.Bussines\BlUsuarioCondicion.cs:línea 77
           en Sipos.Win.UI.FrmUsuario.CargarUCondicion() en d:\1. Informatica\1. Programacion\1. DESARROLLO\APP SOURCE\Windows\PUNTO DE VENTA\Comercio\Sipos\Sipos.Win.UI\FrmUsuario.cs:línea 367
           en Sipos.Win.UI.FrmUsuario.CargaDatosIniciales() en d:\1. Informatica\1. Programacion\1. DESARROLLO\APP SOURCE\Windows\PUNTO DE VENTA\Comercio\Sipos\Sipos.Win.UI\FrmUsuario.cs:línea 384
           en Sipos.Win.UI.FrmUsuario.cmbFiltro_SelectedIndexChanged(Object sender, EventArgs e) en d:\1. Informatica\1. Programacion\1. DESARROLLO\APP SOURCE\Windows\PUNTO DE VENTA\Comercio\Sipos\Sipos.Win.UI\FrmUsuario.cs:línea 423
           en System.Windows.Forms.ComboBox.OnSelectedIndexChanged(EventArgs e)
           en DevComponents.DotNetBar.Controls.ComboBoxEx.OnSelectedIndexChanged(EventArgs e)
           en System.Windows.Forms.ComboBox.WmReflectCommand(Message& m)
           en System.Windows.Forms.ComboBox.WndProc(Message& m)
           en DevComponents.DotNetBar.Controls.ComboBoxEx.WndProc(Message& m)
           en System.Windows.Forms.Control.ControlNativeWindow.OnMessage(Message& m)
           en System.Windows.Forms.Control.ControlNativeWindow.WndProc(Message& m)
           en System.Windows.Forms.NativeWindow.Callback(IntPtr hWnd, Int32 msg, IntPtr wparam, IntPtr lparam)
      InnerException:

    ya he agregados las referencias del System.Data.SqlClient en las capas de negocio y acceso a datos asi como presentacion y aun no resuelvo nada..

    gracias

    jueves, 18 de septiembre de 2014 21:44

Respuestas

  • así luce ahora mi .config en la capa de presentacion

    <?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" />
        <!-- For more information on Entity Framework configuration, visit http://go.microsoft.com/fwlink/?LinkID=237468 -->
      </configSections>
        <startup> 
            <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.5" />      
        </startup>
      <entityFramework>
        <defaultConnectionFactory type="System.Data.Entity.Infrastructure.SqlConnectionFactory, EntityFramework">
          <parameters>
            <!-- <parameter value="v11.0" /> -->
            <parameter value="Data Source=DEVELOP\SQLEXPRESS; Integrated Security=True; MultipleActiveResultSets=True" />
          </parameters>
        </defaultConnectionFactory>
        <providers>
          <provider invariantName="System.Data.SqlClient" type="System.Data.Entity.SqlServer.SqlProviderServices, EntityFramework.SqlServer" />
        </providers>
      </entityFramework>
      <connectionStrings>
        <add name="SiposDb"
              connectionString="Data Source=DEVELOP\SQLEXPRESS;
              Initial Catalog=SIPOS;
              persist security info=True;
              user id=sa;
              password=1784kxfp;
              multipleactiveresultsets=True;"
              providerName="System.Data.SqlClient" />
      </connectionStrings>
    </configuration>

    pero si elimino esta linea al definir el context var proveedordatos = System.Data.Entity.SqlServer.SqlProviderServices.Instance; me aparece este error

    System.InvalidOperationException was unhandled by user code
      HResult=-2146233079
      Message=The Entity Framework provider type 'System.Data.Entity.SqlServer.SqlProviderServices, EntityFramework.SqlServer' registered in the application config file for the ADO.NET provider with invariant name 'System.Data.SqlClient' could not be loaded. Make sure that the assembly-qualified name is used and that the assembly is available to the running application. See http://go.microsoft.com/fwlink/?LinkId=260882 for more information.
      Source=EntityFramework
      StackTrace:
           en System.Data.Entity.Infrastructure.DependencyResolution.ProviderServicesFactory.GetInstance(String providerTypeName, String providerInvariantName)
           en System.Data.Entity.Internal.AppConfig.<.ctor>b__2(ProviderElement e)
           en System.Linq.Enumerable.WhereSelectEnumerableIterator`2.MoveNext()
           en System.Collections.Generic.List`1..ctor(IEnumerable`1 collection)
           en System.Linq.Enumerable.ToList[TSource](IEnumerable`1 source)
           en System.Data.Entity.Internal.AppConfig.<.ctor>b__1()
           en System.Lazy`1.CreateValue()
           en System.Lazy`1.LazyInitValue()
           en System.Lazy`1.get_Value()
           en System.Data.Entity.Internal.AppConfig.get_DbProviderServices()
           en System.Data.Entity.Infrastructure.DependencyResolution.AppConfigDependencyResolver.RegisterDbProviderServices()
           en System.Data.Entity.Infrastructure.DependencyResolution.AppConfigDependencyResolver.GetServiceFactory(Type type, String name)
           en System.Data.Entity.Infrastructure.DependencyResolution.AppConfigDependencyResolver.<>c__DisplayClass1.<GetService>b__0(Tuple`2 t)
           en System.Collections.Concurrent.ConcurrentDictionary`2.GetOrAdd(TKey key, Func`2 valueFactory)
           en System.Data.Entity.Infrastructure.DependencyResolution.AppConfigDependencyResolver.GetService(Type type, Object key)
           en System.Data.Entity.Infrastructure.DependencyResolution.ResolverChain.<>c__DisplayClass3.<GetService>b__0(IDbDependencyResolver r)
           en System.Linq.Enumerable.WhereSelectArrayIterator`2.MoveNext()
           en System.Linq.Enumerable.FirstOrDefault[TSource](IEnumerable`1 source, Func`2 predicate)
           en System.Data.Entity.Infrastructure.DependencyResolution.ResolverChain.GetService(Type type, Object key)
           en System.Data.Entity.Infrastructure.DependencyResolution.CompositeResolver`2.GetService(Type type, Object key)
           en System.Data.Entity.Infrastructure.DependencyResolution.DbDependencyResolverExtensions.GetService[T](IDbDependencyResolver resolver)
           en System.Data.Entity.DbContext.InitializeLazyInternalContext(IInternalConnection internalConnection, DbCompiledModel model)
           en System.Data.Entity.DbContext..ctor(String nameOrConnectionString)
           en Sipos.DataAccess.SiposContext..ctor() en d:\1. Informatica\1. Programacion\1. DESARROLLO\APP SOURCE\Windows\PUNTO DE VENTA\Comercio\Sipos\Sipos.DataAccess\SiposDataContext.cs:línea 14
           en Sipos.DataAccess.DbHelper.CrearBaseDatos() en d:\1. Informatica\1. Programacion\1. DESARROLLO\APP SOURCE\Windows\PUNTO DE VENTA\Comercio\Sipos\Sipos.DataAccess\DbHelper.cs:línea 14
           en Sipos.Bussines.BlDBHelper.BDIniciador() en d:\1. Informatica\1. Programacion\1. DESARROLLO\APP SOURCE\Windows\PUNTO DE VENTA\Comercio\Sipos\Sipos.Bussines\BlDBHelper.cs:línea 15
           en Sipos.Win.UI.MDISIPOS.MDISIPOS_Load(Object sender, EventArgs e) en d:\1. Informatica\1. Programacion\1. DESARROLLO\APP SOURCE\Windows\PUNTO DE VENTA\Comercio\Sipos\Sipos.Win.UI\MDISIPOS.cs:línea 88
           en System.Windows.Forms.Form.OnLoad(EventArgs e)
           en DevComponents.DotNetBar.RibbonForm.OnLoad(EventArgs e)
           en System.Windows.Forms.Form.OnCreateControl()
           en System.Windows.Forms.Control.CreateControl(Boolean fIgnoreVisible)
           en System.Windows.Forms.Control.CreateControl()
           en System.Windows.Forms.Control.WmShowWindow(Message& m)
           en System.Windows.Forms.Control.WndProc(Message& m)
           en System.Windows.Forms.ScrollableControl.WndProc(Message& m)
           en System.Windows.Forms.ContainerControl.WndProc(Message& m)
           en System.Windows.Forms.Form.WmShowWindow(Message& m)
           en System.Windows.Forms.Form.WndProc(Message& m)
           en DevComponents.DotNetBar.RibbonForm.WndProc(Message& m)
           en System.Windows.Forms.Control.ControlNativeWindow.OnMessage(Message& m)
           en System.Windows.Forms.Control.ControlNativeWindow.WndProc(Message& m)
           en System.Windows.Forms.NativeWindow.Callback(IntPtr hWnd, Int32 msg, IntPtr wparam, IntPtr lparam)
      InnerException:

    Siguiendo el link de Microsoft EF6   en el apartado Code-based registration se indica crear una configuracion para declarar el provider. 

    haciendo las modifcaciones del caso este ha sido el resultado

    public SiposContext() : base ("SiposDb")
            {
                this.Configuration.LazyLoadingEnabled = false;
                this.Configuration.ProxyCreationEnabled = false;
            }
    
            public class MyConfiguration : DbConfiguration
            {
                public MyConfiguration()
                {
                    SetProviderServices(
                        System.Data.Entity.SqlServer.SqlProviderServices.ProviderInvariantName,
                        System.Data.Entity.SqlServer.SqlProviderServices.Instance); 
                }
            } 

    y al parecer todo funciona bien, nuevamente los procesos CRUD se ejecutan sin problema alguno.

    Agradecería me indicaran si esta bien o debo aún modificar alguna sección...

    Gracias.


    • Marcado como respuesta Eyder Aguirre lunes, 6 de octubre de 2014 17:03
    viernes, 19 de septiembre de 2014 14:54

Todas las respuestas

  • hola

    recuerda que en el version 6 de EF la forma en como configuras EF cambio

    deberias validar si tienes en la config la seccion entityFramework y si contiene

    Config File Settings

    valida el titulo "Code First Default Connection Factory" esa seccion debes configurar en tu .config

    saludos


    Leandro Tuttini

    Blog
    MVP Profile
    Buenos Aires
    Argentina

    jueves, 18 de septiembre de 2014 22:16
  • este es el config de la capa de acceso a datos

    <?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" />
        <!-- For more information on Entity Framework configuration, visit http://go.microsoft.com/fwlink/?LinkID=237468 -->
      </configSections>
      <entityFramework>
        <defaultConnectionFactory type="System.Data.Entity.Infrastructure.LocalDbConnectionFactory, EntityFramework">
          <parameters>
            <parameter value="v11.0" />
          </parameters>
        </defaultConnectionFactory>
        <providers>
          <provider invariantName="System.Data.SqlClient" type="System.Data.Entity.SqlServer.SqlProviderServices, EntityFramework.SqlServer" />
        </providers>
      </entityFramework>
    </configuration>

    y este es el de la capa de presentacion

    <?xml version="1.0" encoding="utf-8" ?>
    <configuration>
        <startup> 
            <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.5" />      
        </startup>
      <connectionStrings>
        <add name="SiposDb"
              connectionString="Data Source=DEVELOP\SQLEXPRESS;
              Initial Catalog=SIPOS;
              persist security info=True;
              user id=sa;
              password=1784kxfp;
              multipleactiveresultsets=True;"
              providerName="System.Data.SqlClient" />
      </connectionStrings>
    </configuration>

    Agradezco las modificaciones necesarias...


    jueves, 18 de septiembre de 2014 22:40
  • me encontre con esta página Rob´s Neurom y viendo los mismos problemas que tengo actualmente recomiendan agregar esta linea de codigo..
    public abstract class BaseDomainContext : DbContext
    {
    static BaseDomainContext()
    {
    // ROLA - This is a hack to ensure that Entity Framework SQL Provider is copied across to the output folder.
    // As it is installed in the GAC, Copy Local does not work. It is required for probing.
    // Fixed "Provider not loaded" error
    var ensureDLLIsCopied = System.Data.Entity.SqlServer.SqlProviderServices.Instance;
    }
    }

    lo hice y todo funciona, pero acaso existe alguna otra forma de hacer que funcione como debería o siempre hay que declarar esta linea.
    jueves, 18 de septiembre de 2014 23:30
  • hola

    pero te falto llevar la config de la capa de acceso a datos a la capa de presentacion

    recuerda que la config que este en una dll no se tiene en cuenta

    copia la config que requiere EF en el config del proyecto de presentacion

    saludos


    Leandro Tuttini

    Blog
    MVP Profile
    Buenos Aires
    Argentina

    viernes, 19 de septiembre de 2014 1:50
  • así luce ahora mi .config en la capa de presentacion

    <?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" />
        <!-- For more information on Entity Framework configuration, visit http://go.microsoft.com/fwlink/?LinkID=237468 -->
      </configSections>
        <startup> 
            <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.5" />      
        </startup>
      <entityFramework>
        <defaultConnectionFactory type="System.Data.Entity.Infrastructure.SqlConnectionFactory, EntityFramework">
          <parameters>
            <!-- <parameter value="v11.0" /> -->
            <parameter value="Data Source=DEVELOP\SQLEXPRESS; Integrated Security=True; MultipleActiveResultSets=True" />
          </parameters>
        </defaultConnectionFactory>
        <providers>
          <provider invariantName="System.Data.SqlClient" type="System.Data.Entity.SqlServer.SqlProviderServices, EntityFramework.SqlServer" />
        </providers>
      </entityFramework>
      <connectionStrings>
        <add name="SiposDb"
              connectionString="Data Source=DEVELOP\SQLEXPRESS;
              Initial Catalog=SIPOS;
              persist security info=True;
              user id=sa;
              password=1784kxfp;
              multipleactiveresultsets=True;"
              providerName="System.Data.SqlClient" />
      </connectionStrings>
    </configuration>

    pero si elimino esta linea al definir el context var proveedordatos = System.Data.Entity.SqlServer.SqlProviderServices.Instance; me aparece este error

    System.InvalidOperationException was unhandled by user code
      HResult=-2146233079
      Message=The Entity Framework provider type 'System.Data.Entity.SqlServer.SqlProviderServices, EntityFramework.SqlServer' registered in the application config file for the ADO.NET provider with invariant name 'System.Data.SqlClient' could not be loaded. Make sure that the assembly-qualified name is used and that the assembly is available to the running application. See http://go.microsoft.com/fwlink/?LinkId=260882 for more information.
      Source=EntityFramework
      StackTrace:
           en System.Data.Entity.Infrastructure.DependencyResolution.ProviderServicesFactory.GetInstance(String providerTypeName, String providerInvariantName)
           en System.Data.Entity.Internal.AppConfig.<.ctor>b__2(ProviderElement e)
           en System.Linq.Enumerable.WhereSelectEnumerableIterator`2.MoveNext()
           en System.Collections.Generic.List`1..ctor(IEnumerable`1 collection)
           en System.Linq.Enumerable.ToList[TSource](IEnumerable`1 source)
           en System.Data.Entity.Internal.AppConfig.<.ctor>b__1()
           en System.Lazy`1.CreateValue()
           en System.Lazy`1.LazyInitValue()
           en System.Lazy`1.get_Value()
           en System.Data.Entity.Internal.AppConfig.get_DbProviderServices()
           en System.Data.Entity.Infrastructure.DependencyResolution.AppConfigDependencyResolver.RegisterDbProviderServices()
           en System.Data.Entity.Infrastructure.DependencyResolution.AppConfigDependencyResolver.GetServiceFactory(Type type, String name)
           en System.Data.Entity.Infrastructure.DependencyResolution.AppConfigDependencyResolver.<>c__DisplayClass1.<GetService>b__0(Tuple`2 t)
           en System.Collections.Concurrent.ConcurrentDictionary`2.GetOrAdd(TKey key, Func`2 valueFactory)
           en System.Data.Entity.Infrastructure.DependencyResolution.AppConfigDependencyResolver.GetService(Type type, Object key)
           en System.Data.Entity.Infrastructure.DependencyResolution.ResolverChain.<>c__DisplayClass3.<GetService>b__0(IDbDependencyResolver r)
           en System.Linq.Enumerable.WhereSelectArrayIterator`2.MoveNext()
           en System.Linq.Enumerable.FirstOrDefault[TSource](IEnumerable`1 source, Func`2 predicate)
           en System.Data.Entity.Infrastructure.DependencyResolution.ResolverChain.GetService(Type type, Object key)
           en System.Data.Entity.Infrastructure.DependencyResolution.CompositeResolver`2.GetService(Type type, Object key)
           en System.Data.Entity.Infrastructure.DependencyResolution.DbDependencyResolverExtensions.GetService[T](IDbDependencyResolver resolver)
           en System.Data.Entity.DbContext.InitializeLazyInternalContext(IInternalConnection internalConnection, DbCompiledModel model)
           en System.Data.Entity.DbContext..ctor(String nameOrConnectionString)
           en Sipos.DataAccess.SiposContext..ctor() en d:\1. Informatica\1. Programacion\1. DESARROLLO\APP SOURCE\Windows\PUNTO DE VENTA\Comercio\Sipos\Sipos.DataAccess\SiposDataContext.cs:línea 14
           en Sipos.DataAccess.DbHelper.CrearBaseDatos() en d:\1. Informatica\1. Programacion\1. DESARROLLO\APP SOURCE\Windows\PUNTO DE VENTA\Comercio\Sipos\Sipos.DataAccess\DbHelper.cs:línea 14
           en Sipos.Bussines.BlDBHelper.BDIniciador() en d:\1. Informatica\1. Programacion\1. DESARROLLO\APP SOURCE\Windows\PUNTO DE VENTA\Comercio\Sipos\Sipos.Bussines\BlDBHelper.cs:línea 15
           en Sipos.Win.UI.MDISIPOS.MDISIPOS_Load(Object sender, EventArgs e) en d:\1. Informatica\1. Programacion\1. DESARROLLO\APP SOURCE\Windows\PUNTO DE VENTA\Comercio\Sipos\Sipos.Win.UI\MDISIPOS.cs:línea 88
           en System.Windows.Forms.Form.OnLoad(EventArgs e)
           en DevComponents.DotNetBar.RibbonForm.OnLoad(EventArgs e)
           en System.Windows.Forms.Form.OnCreateControl()
           en System.Windows.Forms.Control.CreateControl(Boolean fIgnoreVisible)
           en System.Windows.Forms.Control.CreateControl()
           en System.Windows.Forms.Control.WmShowWindow(Message& m)
           en System.Windows.Forms.Control.WndProc(Message& m)
           en System.Windows.Forms.ScrollableControl.WndProc(Message& m)
           en System.Windows.Forms.ContainerControl.WndProc(Message& m)
           en System.Windows.Forms.Form.WmShowWindow(Message& m)
           en System.Windows.Forms.Form.WndProc(Message& m)
           en DevComponents.DotNetBar.RibbonForm.WndProc(Message& m)
           en System.Windows.Forms.Control.ControlNativeWindow.OnMessage(Message& m)
           en System.Windows.Forms.Control.ControlNativeWindow.WndProc(Message& m)
           en System.Windows.Forms.NativeWindow.Callback(IntPtr hWnd, Int32 msg, IntPtr wparam, IntPtr lparam)
      InnerException:

    Siguiendo el link de Microsoft EF6   en el apartado Code-based registration se indica crear una configuracion para declarar el provider. 

    haciendo las modifcaciones del caso este ha sido el resultado

    public SiposContext() : base ("SiposDb")
            {
                this.Configuration.LazyLoadingEnabled = false;
                this.Configuration.ProxyCreationEnabled = false;
            }
    
            public class MyConfiguration : DbConfiguration
            {
                public MyConfiguration()
                {
                    SetProviderServices(
                        System.Data.Entity.SqlServer.SqlProviderServices.ProviderInvariantName,
                        System.Data.Entity.SqlServer.SqlProviderServices.Instance); 
                }
            } 

    y al parecer todo funciona bien, nuevamente los procesos CRUD se ejecutan sin problema alguno.

    Agradecería me indicaran si esta bien o debo aún modificar alguna sección...

    Gracias.


    • Marcado como respuesta Eyder Aguirre lunes, 6 de octubre de 2014 17:03
    viernes, 19 de septiembre de 2014 14:54