Simplemente estoy tratando de aprender MVC 3 y siguiendo un libro de Wrox. Las cosas fueron bien hasta que intenté ejecutar un pequeño ejercicio. Estoy recibiendo un error que es muy común. He intentado de todo pero no puede encontrar cuál es el problema. Puede alguien ayudarme.

De la configuración de mi.

  1. instalado VS201 y, a continuación, utiliza WebPlatForm Installer para instalar el SP1. Que hizo instalado el SP1 instalado y MVC3 y las plantillas de marco tan bien en mi máquina. Hasta ahora tan bueno.

  2. Después de que he instalado SQL Server 2008 R2 Developer Edition, de nuevo tan lejos y tan bien.

He seguido paso a paso el ejercicio y se encontró un error que se está convirtiendo en una pesadilla para mí. el error que se menciona a continuación.

System.Data.ProviderIncompatibleException was unhandled by user code
Message=The provider did not return a ProviderManifestToken string.
Source=System.Data.Entity
StackTrace:
at System.Data.Common.DbProviderServices.GetProviderManifestToken(DbConnection connection)
at System.Data.Entity.ModelConfiguration.Utilities.DbConnectionExtensions.GetProviderInfo(DbConnection connection, DbProviderManifest& providerManifest)
at System.Data.Entity.DbModelBuilder.Build(DbConnection providerConnection)
at System.Data.Entity.Internal.LazyInternalContext.CreateModel(LazyInternalContext internalContext)
at System.Data.Entity.Internal.RetryLazy`2.GetValue(TInput input)
at System.Data.Entity.Internal.LazyInternalContext.InitializeContext()
at System.Data.Entity.Internal.InternalContext.Initialize()
at System.Data.Entity.Internal.InternalContext.GetEntitySetAndBaseTypeForType(Type entityType)
at System.Data.Entity.Internal.Linq.InternalSet`1.Initialize()
at System.Data.Entity.Internal.Linq.InternalSet`1.Include(String path)
at System.Data.Entity.Infrastructure.DbQuery`1.Include(String path)
at System.Data.Entity.DbExtensions.Include[T](IQueryable`1 source, String path)
at System.Data.Entity.DbExtensions.Include[T,TProperty](IQueryable`1 source, Expression`1 path)
at MvcMusicStore.Controllers.StoreManagerController.Index() in c:\users\uk\documents\visual studio 2010\Projects\MvcMusicStore\MvcMusicStore\Controllers\StoreManagerController.cs:line 21
at lambda_method(Closure , ControllerBase , Object[] )
at System.Web.Mvc.ActionMethodDispatcher.Execute(ControllerBase controller, Object[] parameters)
at System.Web.Mvc.ReflectedActionDescriptor.Execute(ControllerContext controllerContext, IDictionary`2 parameters)
at System.Web.Mvc.ControllerActionInvoker.InvokeActionMethod(ControllerContext controllerContext, ActionDescriptor actionDescriptor, IDictionary`2 parameters)
at System.Web.Mvc.ControllerActionInvoker.<>c__DisplayClass15.<InvokeActionMethodWithFilters>b__12()
at System.Web.Mvc.ControllerActionInvoker.InvokeActionMethodFilter(IActionFilter filter, ActionExecutingContext preContext, Func`1 continuation)
InnerException: System.Data.SqlClient.SqlException
Message=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: 26 - Error Locating Server/Instance Specified)
Source=.Net SqlClient Data Provider
ErrorCode=-2146232060
Class=20
LineNumber=0
Number=-1
Server=""
State=0
StackTrace:
at System.Data.SqlClient.SqlInternalConnection.OnError(SqlException exception, Boolean breakConnection)
at System.Data.SqlClient.TdsParser.ThrowExceptionAndWarning()
at System.Data.SqlClient.TdsParser.Connect(ServerInfo serverInfo, SqlInternalConnectionTds connHandler, Boolean ignoreSniOpenTimeout, Int64 timerExpire, Boolean encrypt, Boolean trustServerCert, Boolean integratedSecurity)
at System.Data.SqlClient.SqlInternalConnectionTds.AttemptOneLogin(ServerInfo serverInfo, String newPassword, Boolean ignoreSniOpenTimeout, TimeoutTimer timeout, SqlConnection owningObject)
at System.Data.SqlClient.SqlInternalConnectionTds.LoginNoFailover(ServerInfo serverInfo, String newPassword, Boolean redirectedUserInstance, SqlConnection owningObject, SqlConnectionString connectionOptions, TimeoutTimer timeout)
at System.Data.SqlClient.SqlInternalConnectionTds.OpenLoginEnlist(SqlConnection owningObject, TimeoutTimer timeout, SqlConnectionString connectionOptions, String newPassword, Boolean redirectedUserInstance)
at System.Data.SqlClient.SqlInternalConnectionTds..ctor(DbConnectionPoolIdentity identity, SqlConnectionString connectionOptions, Object providerInfo, String newPassword, SqlConnection owningObject, Boolean redirectedUserInstance)
at System.Data.SqlClient.SqlConnectionFactory.CreateConnection(DbConnectionOptions options, Object poolGroupProviderInfo, DbConnectionPool pool, DbConnection owningConnection)
at System.Data.ProviderBase.DbConnectionFactory.CreatePooledConnection(DbConnection owningConnection, DbConnectionPool pool, DbConnectionOptions options)
at System.Data.ProviderBase.DbConnectionPool.CreateObject(DbConnection owningObject)
at System.Data.ProviderBase.DbConnectionPool.UserCreateRequest(DbConnection owningObject)
at System.Data.ProviderBase.DbConnectionPool.GetConnection(DbConnection owningObject)
at System.Data.ProviderBase.DbConnectionFactory.GetConnection(DbConnection owningConnection)
at System.Data.ProviderBase.DbConnectionClosed.OpenConnection(DbConnection outerConnection, DbConnectionFactory connectionFactory)
at System.Data.SqlClient.SqlConnection.Open()
at System.Data.SqlClient.SqlProviderServices.UsingConnection(SqlConnection sqlConnection, Action`1 act)
at System.Data.SqlClient.SqlProviderServices.UsingMasterConnection(SqlConnection sqlConnection, Action`1 act)
at System.Data.SqlClient.SqlProviderServices.GetDbProviderManifestToken(DbConnection connection)
at System.Data.Common.DbProviderServices.GetProviderManifestToken(DbConnection connection)
InnerException: 

Como una solución. He comprobado el Servicio Explorador de SQL Server está habilitado. También he ejecutado el PortyQry.exe de Microsoft para averiguar si SQL Server está respondiendo. y recibió la siguiente respuesta.

Attempting to resolve name to IP address...
Name resolved to x.x.x.x
querying...
UDP port 1434 (ms-sql-m service): LISTENING or
Sending SQL Server query to UDP port 1434...
Server's response:
ServerName MVC3Machine
InstanceName MSSQLSERVER
IsClustered No
Version 10.50.1600.1
tcp 1433
♦  ♦
==== End of SQL Server query response ====

También aquí es la cadena de conexión

<add name="MusicStoreDB" connectionString="Server=(local); Database=MusicStore; Trusted_Connection=true; Integrated Security=True" providerName="System.Data.SqlClient" />

Edit1:
Yo no soy de usar cualquier base de datos para construir el Modelo. Estoy tratando de usar el Código de Primer enfoque de la EF.

Edit 2:

using System.Data.Entity;
namespace MvcMusicStore.Models
{
public class MvcMusicStoreContext : DbContext
{
//You can add custom code to this file. Changes will not be overwritten.
//
//If you want Entity Framework to drop and regenerate your database
//automatically whenever you change your model schema, add the following
//code to the Application_Start method in your Global.asax file.
//Note: this will destroy and re-create your database with every model change.
//
//System.Data.Entity.Database.SetInitializer(new System.Data.Entity.DropCreateDatabaseIfModelChanges<MvcMusicStore.Models.MvcMusicStoreContext>());
public DbSet<Album> Albums { get; set; }
public DbSet<Genre> Genres { get; set; }
public DbSet<Artist> Artists { get; set; }
}
}

Alguien puede sugerirme algo para tratar de…

Gracias

  • Puedo ver su Base de datos de Contexto de la clase? (Miclase : DbContext)
  • Pablo, por ti he editado mi post. Por favor revise Edición 2.
  • Por favor, ver mi respuesta, gracias.
InformationsquelleAutor Shax | 2011-08-30

4 Comentarios

  1. 2

    Por defecto, EFCF tratará de hacer una base de datos de su modelo en su local ./SQLEXPRESS Si desea especificar una cadena de conexión distinta en su web.config tienes que decirle a la EF el nombre de su cadena de conexión en el constructor de su contexto de base de datos como la siguiente:

    public class MvcMusicStoreContext: DbContext 
    {
    //Add the name of your database connection to the base DbContext calss
    public MvcMusicStoreContext() : base("MusicStoreDB")
    {}
    public DbSet<Album> Albums { get; set; }
    public DbSet<Genre> Genres { get; set; }
    public DbSet<Artist> Artists { get; set; }
    }

    La cadena de conexión:

    <add name="MusicStoreDB" connectionString="Data Source=localhost;Initial Catalog=MusicStoreDB;Integrated Security=True" providerName="System.Data.SqlClient"/>
    • Pablo, sin suerte. mismo error. Estoy tratando de usar el código de primer enfoque, y además no estoy usando SqlExpress versión. Estoy utilizando la Versión de Desarrollador
    • Generalmente, cuando se utiliza SQL Developer, no se usan (local), sería una instancia con nombre. Como Sunombre-PC. Abrir Management Studio y mira lo que el valor de la Server Name es.
    • Intente actualizar su conexión a la anterior
    • Pablo, sin suerte. Sigue el mismo error.
    • Ok, yo soy capaz de ejecutar el código. Gracias Pablo por sus esfuerzos en la solución de mi problema. Simplemente he reinstalado todo, incluso mi Win 7 OS y esta vez he instalado SQL Server 2008 R2 Express en lugar de SQL Server 2008 R2 Desarrollador.
    • Me alegro de que usted vaya a trabajar 🙂

  2. 4

    basta con sustituir su conn cadena con esto y si ha copiado MvcMusicStore.archivos mdf de eliminar los de la carpeta App_Data la esperanza de que va a trabajar

    <clear />
    <add name="MusicStoreEntities" connectionString="data source=.\SQLEXPRESS1;Integrated Security=SSPI;Initial Catalog=MvcMusicStore;AttachDBFilename=|DataDirectory|MvcMusicStore.mdf;User Instance=true" providerName="System.Data.SqlClient" />

  3. 1

    La cadena de conexión para la EF debe ser un EntityConnection Cadena De Conexión.

    Comprobar su aplicación.config en el proyecto donde se creó el Marco de la Entidad edmx (si se utiliza una base de datos para crear el modelo), y una cadena de conexión debe estar ahí.

    Aquí está el código de ejemplo para crear el EF Cadena de Conexión:

    efName es el nombre de su archivo edmx. Ejemplo: Prueba.edmx – efName = «Prueba»

        private static string GetEntityFrameworkConnectionString(string connectionString, string efName)
    {
    var entityBuilder = new EntityConnectionStringBuilder();
    entityBuilder.Provider = "System.Data.SqlClient";
    entityBuilder.ProviderConnectionString = connectionString;
    entityBuilder.Metadata = "res://*/" + efName + ".csdl|res://*/" + efName + ".ssdl|res://*/" + efName + ".msl";
    return entityBuilder.ToString();
    }
  4. 0

    Para SQL Server 2008 R2 Developer Edition, usted puede usar la siguiente conexión stirng para tu pc

    <add name="MvcMusicStoreContext" connectionString="Data Source=MVC3Machine; Initial Catalog=MusicStoreDB; Integrated Security=SSPI;" providerName="System.Data.SqlClient" />

Dejar respuesta

Please enter your comment!
Please enter your name here