none
Tengo el siguiente problema a la hora de crear mi clase de controlador para una entidad: RRS feed

  • Pregunta

  • Hola amigo muy buenas tardes.

    Quisiera que me apoyen a resolver el siguiente problema, que me manda a la hora de crear mi clase de controlador de una entidad, tal como se muestra en la siguiente imagen:

    Y después de hacer clic en agregar me manda el siguiente mensaje:

    Unable to retrieve metadata for "Nombre_de_mi_Proyecto.Models.Perfil". The 'SqlSampleDataContextConnectionString' setting is not available.
    Nombre del parámetro: Key

    Por favor necesito una ayuda urgente, se los agradeceré mucho.

    Saludos.

    Marcois.


    • Editado marcois jueves, 17 de enero de 2013 18:56
    jueves, 17 de enero de 2013 18:54

Todas las respuestas

  • segun veo no puede recuperar el connection string para conectarse con entity framework

    en el web.config esta el connection string con el key igual a SqlSampleDataContextConnectionString?

    saludos


    Leandro Tuttini

    Blog
    Buenos Aires
    Argentina

    jueves, 17 de enero de 2013 19:44
  • Hola Leandro, muchas gracias por su respuesta.

    No encuentro la Key que me dices en mi cadena de conexión de mi web.config, te comento estoy trabajando con ASP.NET MVC 3, Entity Framework, pero cada vez que hago algún cambio en alguna de las propiedades de mi clase entidad, ya se me descuadra mi aplicación, es como decir es intocable después de ejecutar mi aplicación, la verdad es un dolor de cabeza para mi, para que puedas ayudarme voy a pasarte la configuración de mi web.config:

    <?xml version="1.0" encoding="utf-8"?>
    <configuration>
      <system.diagnostics>
        <trace>
          <listeners>
            <add type="Microsoft.WindowsAzure.Diagnostics.DiagnosticMonitorTraceListener, Microsoft.WindowsAzure.Diagnostics, Version=1.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" name="AzureDiagnostics">
              <filter type="" />
            </add>
          </listeners>
        </trace>
      </system.diagnostics>
      <appSettings>
        <add key="ContainerSASExperiationTime" value="10" />
        <add key="BlobSASExperiationTime" value="10" />
        <add key="webpages:Version" value="1.0.0.0" />
        <add key="ClientValidationEnabled" value="true" />
        <add key="UnobtrusiveJavaScriptEnabled" value="true" />
      </appSettings>
      <connectionStrings>
        <add name="ApplicationServices" connectionString="Data Source=.\SQLEXPRESS;Integrated Security=true;User Instance=true;AttachDBFilename=|DataDirectory|\SAPU.mdf;Initial Catalog=SAPU;MultipleActiveResultSets=True" providerName="System.Data.SqlClient" />
      </connectionStrings>
      <system.web>
        <compilation debug="true" targetFramework="4.0">
          <assemblies>
            <add assembly="System.Web.Abstractions, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" />
            <add assembly="System.Web.Routing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" />
            <add assembly="System.Web.Mvc, Version=3.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" />
            <add assembly="System.Web.WebPages, Version=1.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" />
            <add assembly="System.Web.Helpers, Version=1.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" />
          </assemblies>
        </compilation>
        <customErrors mode="On" defaultRedirect="Error" />
        <pages>
          <namespaces>
            <add namespace="System.Web.Mvc" />
            <add namespace="System.Web.Mvc.Ajax" />
            <add namespace="System.Web.Mvc.Html" />
            <add namespace="System.Web.Routing" />
            <add namespace="System.Web.WebPages" />
            <add namespace="System.Web.Helpers" />
          </namespaces>
        </pages>
        <machineKey decryption="AES" decryptionKey="0CA3EFAF0F7A5E7A62681C0BF656EE0ECE31ACEE3E1023BA3FAD20EA5F199DE8" validation="SHA1" validationKey="865F235AEDB0F0E6559D219591E37B3DBA985FB49DE62168764FF0DCE537184F0535D5D9AD66DEDC97DC1ABFF7FA540B4DFD82E5BB196B95D15FF81F75AD5328" />
        <membership defaultProvider="DefaultMembershipProvider" userIsOnlineTimeWindow="20">
          <providers>
            <clear />
            <add name="DefaultMembershipProvider" type="System.Web.Providers.DefaultMembershipProvider, System.Web.Providers, Version=1.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" connectionStringName="ApplicationServices" applicationName="WindowsPhoneCloud" enablePasswordRetrieval="false" enablePasswordReset="true" requiresQuestionAndAnswer="false" minRequiredPasswordLength="6" minRequiredNonalphanumericCharacters="0" requiresUniqueEmail="true" maxInvalidPasswordAttempts="5" passwordAttemptWindow="10" />
          </providers>
        </membership>
      </system.web>
      <system.webServer>
        <httpErrors existingResponse="PassThrough" />
        <validation validateIntegratedModeConfiguration="false" />
        <modules runAllManagedModulesForAllRequests="true" />
        <staticContent>
          <remove fileExtension=".cer" />
          <mimeMap fileExtension=".cer" mimeType="application/x-x509-ca-cert" />
        </staticContent>
        <handlers>
          <remove name="SecurityCertificate" />
        </handlers>
      </system.webServer>
      <runtime>
        <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
          <dependentAssembly>
            <assemblyIdentity name="System.Web.Mvc" publicKeyToken="31bf3856ad364e35" />
            <bindingRedirect oldVersion="1.0.0.0-2.0.0.0" newVersion="3.0.0.0" />
          </dependentAssembly>
        </assemblyBinding>
      </runtime>
      <system.serviceModel>
        <behaviors>
          <serviceBehaviors>
            <behavior name="">
              <serviceMetadata httpsGetEnabled="true" />
              <serviceDebug includeExceptionDetailInFaults="false" />
            </behavior>
          </serviceBehaviors>
        </behaviors>
        <serviceHostingEnvironment aspNetCompatibilityEnabled="true" multipleSiteBindingsEnabled="true" />
      </system.serviceModel>
      <location path="AuthenticationService">
        <system.web>
          <customErrors mode="Off" />
        </system.web>
      </location>
      <location path="PushNotificationService">
        <system.web>
          <customErrors mode="Off" />
        </system.web>
      </location>
      <location path="SqlAzureSampleODataService">
        <system.web>
          <customErrors mode="Off" />
        </system.web>
      </location>
    </configuration>

    Esta configuración me vino por defecto a la hora de crear mi proyecto, estoy trabajando con Windows Azure for Windows Phone 7 Toolkit, la cual viene integrado una aplicación web y phone con ASP.NET MVC 3, EF, Autenticación Membership provider, web roles y otros. 

    Por favor Necesito que me puedes explicar porque mi código es intocable, además e intentado trabajar separadamente en una aplicación normal de MVC 3 con EF, pero igual sucede, a pesar que borro la base de datos.

    Gracias por su respuesta Leandro.

    Saludos.

    Marcois

    viernes, 18 de enero de 2013 15:26
  • Hola Leandro.

    Aquí voy a mostrar mi contexto de datos, a la hora de ejecutar mi aplicación se crean las tablas y todo los demás, pero hago algún cambio en mi código ya me empieza el dolor de cabeza, a pesar que la documentación de la página de Windows Azure for Windows Phone Toolkit es pésimo, no encuentro ninguna ayuda, pero tengo que hacer correr mi aplicación en la nube de Microsoft "Windows Azure" y que sea consumido por un cliente windows phone 7, por eso opté pór trabajar con este toolkit. 

    Este es mi contexto de datos:

    namespace SAPU.Web.Infrastructure
    {
        using System;
        using System.Collections.Generic;
        using System.Data.Entity;
        using System.Data.Entity.ModelConfiguration.Conventions;
        using System.Linq;
        using SAPU.Web.Models;
    
        // Summary:
        //     Sample Entity Framework 4.1 context class intended for connecting with SQL Azure.
        //     Place a DbSet<T> property for each collection of entities that should be queried from the database.
    
        public class SqlDataContext : DbContext, IUserPrivilegesRepository, IPushUserEndpointsRepository
        {
            public const string PushUserTableName = "PushUserEndpoints";
    
            private const string PublicUserId = "00000000-0000-0000-0000-000000000000";
    
            public SqlDataContext()
                : base(ConfigReader.GetConfigValue("SqlSampleDataContextConnectionString"))
            {
            }
    
            public DbSet<SqlSampleData> SqlSampleData { get; set; }
    
            public DbSet<UserPrivilege> UserPrivileges { get; set; }
    
            public DbSet<PushUserEndpoint> PushUserEndpoints { get; set; }
    
            public DbSet<QueuedPushNotification> QueuedPushNotifications { get; set; }
    
            public DbSet<Perfil> Perfiles { get; set; }
            public DbSet<Usuario> Usuarios { get; set; }
            public DbSet<Estudiante> Estudiantes { get; set; }
            public DbSet<Docente> Docentes { get; set; }
            public DbSet<Administrativo> Administrativos { get; set; }
            public DbSet<Instituto> Institutos { get; set; }
            public DbSet<Departamento> departamentos { get; set; }
            public DbSet<CarreraProfesional> CarrerasProfesionales { get; set; }
            public DbSet<Estudiante_CarreraProfesional> Estudiante_CarreraProfesional { get; set; }
            public DbSet<Turno> Turnos { get; set; }
            public DbSet<Seccion> Secciones { get; set; }
            public DbSet<Semestre> Semestres { get; set; }
            public DbSet<Matricula> Matriculas { get; set; }
            public DbSet<NotaXunidad> Notas { get; set; }
            public DbSet<AsistenciaXunidad> Asistencias { get; set; }
            public DbSet<PlanEstudio> PlanDeEstudios { get; set; }
            public DbSet<ModuloProfesional> ModulosProfesionales { get; set; }
            public DbSet<UnidadDidactica> Unidades { get; set; }
            public DbSet<PlanEstudio_UnidadDidactica> PlanEstudio_UnidadDidactica { get; set; }
            public DbSet<Matricula_UnidadDidactica> Matricula_UnidadDidactica { get; set; }
            public DbSet<Profesion> Profesiones { get; set; }
            public DbSet<Docente_Profesion> Docente_Profesion { get; set; }
            public DbSet<CarreraProfesional_Docente> CarreraProfesional_Docente { get; set; }
            public DbSet<Docente_UnidadDidactica> Docente_UnidadDidactica { get; set; }
            public DbSet<CarreraProfesional_ModuloProfesional> CarreraProfesional_ModuloProfesional { get; set; }
            public DbSet<Hora> Horas { get; set; }
            public DbSet<Dia> Dias { get; set; }
            public DbSet<SalonEstudio> SalonEstudio { get; set; }
            public DbSet<HorarioXsemestre> HorarioXsemestre { get; set; }
            public DbSet<CriterioEvaluacion> CriterioEvaluacion { get; set; }
            public DbSet<CapacidadTerminal> CapacidadTerminal { get; set; }
            public DbSet<Carga_Curricular> Carga_Curricular { get; set; }
            public DbSet<Accion> Accion { get; set; }
            public DbSet<Auditoria> Auditorias { get; set; }
    
            public IEnumerable<UserPrivilege> GetUsersWithPrivilege(string privilege)
            {
                return this.UserPrivileges
                    .Where(p => p.Privilege.Equals(privilege, StringComparison.OrdinalIgnoreCase))
                    .ToList();
            }
    
            public void AddSampleData(int id, string title, bool isPublic, DateTime date)
            {
                this.SqlSampleData.Add(new SqlSampleData
                {
                    Id = id,
                    Title = title,
                    IsPublic = isPublic,
                    Date = date
                });
    
                this.SaveChanges();
            }
    
            public void AddPrivilegeToUser(string userId, string privilege)
            {
                if (!this.HasUserPrivilege(userId, privilege))
                {
                    this.UserPrivileges.Add(new UserPrivilege { UserId = userId, Privilege = privilege });
                    this.SaveChanges();
                }
            }
    
            public void AddPublicPrivilege(string privilege)
            {
                this.AddPrivilegeToUser(PublicUserId, privilege);
            }
    
            public void RemovePrivilegeFromUser(string userId, string privilege)
            {
                var userPrivilege = this.GetUserPrivilege(userId, privilege);
                if (userPrivilege != null)
                {
                    this.UserPrivileges.Remove(userPrivilege);
                    this.SaveChanges();
                }
            }
    
            public void DeletePublicPrivilege(string privilege)
            {
                this.RemovePrivilegeFromUser(PublicUserId, privilege);
            }
    
            public void DeletePrivilege(string privilege)
            {
                var userPrivileges = this.GetUsersWithPrivilege(privilege);
                foreach (var userPrivilege in userPrivileges)
                {
                    this.UserPrivileges.Remove(userPrivilege);
                }
    
                this.SaveChanges();
            }
    
            public bool HasUserPrivilege(string userId, string privilege)
            {
                return this.GetUserPrivilege(userId, privilege) != null;
            }
    
            public bool PublicPrivilegeExists(string privilege)
            {
                return this.HasUserPrivilege(PublicUserId, privilege);
            }
    
            public void AddPushUserEndpoint(PushUserEndpoint pushUserEndpoint)
            {
                this.PushUserEndpoints.Add(pushUserEndpoint);
                this.SaveChanges();
            }
    
            public void UpdatePushUserEndpoint(PushUserEndpoint pushUserEndpoint)
            {
                var storedPushUser = this.GetPushUserByApplicationAndDevice(pushUserEndpoint.ApplicationId, pushUserEndpoint.DeviceId);
                if (storedPushUser == null)
                {
                    throw new ArgumentException(@"Push user endpoint not in repository", "pushUserEndpoint");
                }
    
                storedPushUser.TileCount = pushUserEndpoint.TileCount;
                storedPushUser.UserId = pushUserEndpoint.UserId;
                storedPushUser.ChannelUri = pushUserEndpoint.ChannelUri;
                this.SaveChanges();
            }
    
            public void RemovePushUserEndpoint(PushUserEndpoint pushUserEndpoint)
            {
                var storedPushUser = this.GetPushUserByApplicationAndDevice(pushUserEndpoint.ApplicationId, pushUserEndpoint.DeviceId);
                if (storedPushUser.QueuedPushNotifications != null)
                {
                    foreach (var message in storedPushUser.QueuedPushNotifications)
                    {
                        this.QueuedPushNotifications.Remove(message);
                    }
                }
    
                this.PushUserEndpoints.Remove(storedPushUser);
                this.SaveChanges();
            }
    
            [CLSCompliant(false)]
            public PushUserEndpoint GetPushUserByApplicationAndDevice(string applicationId, string deviceId)
            {
                return this.PushUserEndpoints
                    .Where(u => u.ApplicationId.Equals(applicationId, StringComparison.OrdinalIgnoreCase)
                                && u.DeviceId.Equals(deviceId, StringComparison.OrdinalIgnoreCase))
                    .FirstOrDefault<PushUserEndpoint>();
            }
    
            public IEnumerable<string> GetAllPushUsers()
            {
                return this.PushUserEndpoints
                    .ToList()
                    .GroupBy(u => u.UserId)
                    .Select(g => g.Key);
            }
    
            public PushUserEndpoint GetPushUserEndpointByChannel(Uri channelUri)
            {
                var channel = channelUri.ToString();
                return this.PushUserEndpoints.SingleOrDefault(u => u.ChannelUri.Equals(channel, StringComparison.OrdinalIgnoreCase));
            }
    
            public IEnumerable<PushUserEndpoint> GetPushUsersByName(string userId)
            {
                return this.PushUserEndpoints
                    .Where(u => u.UserId.Equals(userId, StringComparison.OrdinalIgnoreCase))
                    .ToList();
            }
    
            public IEnumerable<QueuedPushNotification> GetQueuedPushNotificationsByChannel(Uri channelUri)
            {
                var channel = channelUri.ToString();
                return this.QueuedPushNotifications.Where(p => p.ChannelUri.Equals(channel, StringComparison.OrdinalIgnoreCase));
            }
    
            public void DeleteQueuedMessage(QueuedPushNotification message)
            {
                this.QueuedPushNotifications.Remove(message);
                this.SaveChanges();
            }
    
            public void AddQueuedPushNotification(QueuedPushNotification queuedPushNotification)
            {
                this.QueuedPushNotifications.Add(queuedPushNotification);
                this.SaveChanges();
            }
    
            protected override void OnModelCreating(DbModelBuilder modelBuilder)
            {
                modelBuilder.Conventions.Remove<PluralizingEntitySetNameConvention>();
                modelBuilder.Conventions.Remove<PluralizingTableNameConvention>();
            }
    
            private UserPrivilege GetUserPrivilege(string userId, string privilege)
            {
                return this.UserPrivileges
                    .Where(p => p.UserId.Equals(userId, StringComparison.OrdinalIgnoreCase) && p.Privilege.Equals(privilege, StringComparison.OrdinalIgnoreCase))
                    .ToList()
                    .FirstOrDefault();
            }
        }
    }

    Gracias por su ayuda.

    Saludos.

    Marcois

    viernes, 18 de enero de 2013 15:33