none
¿En cual servidor trabaja el Entity Framework? RRS feed

  • Pregunta

  • Hola a todos.

    He copiado un ejemplo de como funciona el entity framework y lo he ejecutado. Todo va bien, el programa corre y me genera una base de datos, las tablas e inserta registros.

    Pero a la hora de buscar la base de datos con el management studio no la encuentro. solo puede ser porque la base de datos esta en otro servidor.

    ¿Entity framework crea su propio servidor o donde creó la base de datos?

    Aclaro que no soy experto en bases de datos, de modo que agradecería si me explican detalladamente


    • Editado jeduardonl martes, 1 de agosto de 2017 23:47 .
    martes, 1 de agosto de 2017 23:46

Respuestas

  • Pues bien, aunque las respuestas que me dieron Willams Morales y Pedro Ávila no fueron exactas, sí que tenían razón en una cosa: el dato que necesito esta en el appconfig; sin embargo la respuesta definitiva la obtuve de otro sitio.

    La clase DbContext, de la cual hereda el objeto con el que se hace la magia del Entity Framework (entiéndase comunicación con la base de datos), tiene una propiedad Database y esta a su vez tiene una propiedad Connection la cual tiene la propiedad DataSource de donde saque la información que necesitaba, solo puse un breakpoint justo después de instanciar el objeto y leí la propiedad.

    Gracias a quienes respondieron.

    • Marcado como respuesta jeduardonl miércoles, 2 de agosto de 2017 2:16
    miércoles, 2 de agosto de 2017 2:16

Todas las respuestas

  • Abre el archivo de configuración de tu proyecto App.config/web.config, busca la sección 'connectionStrings' y dentro busca alguna entrada de cadena de conexión, deberías tener cuanto menos una donde el atributo 'Data Source' contenga una instancia de una base de datos local, algo como (localdb)\...

    Copia el valor del atributo 'Data Source' y pega en la caja de texto 'Server name' para conectarte a la instancia desde Management Studio. Si deseas, podrías conectarte desde Visual Studio: VER > Explorador de objetos de SQL Server.


    Nuestra profesión exige tener pasión por resolver problemas de una manera óptima y eficiente.
    miércoles, 2 de agosto de 2017 0:40
  • Hola

    La cadena de conexión esta declarado en tu archivo App.config si es una aplicación de escritorio y si es una aplicación Web esta declarado en un archivo Web.config, justamente en la sección connectionString como por ejemplo:

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

    En Data Source es el nombre de tu servidor de base de datos puede estar definido con un punto cuando es predeterminado o también cuando es una instancia algo como por ejemplo nombreDeEquipo\SQLExpress.

    Lo que tengas en el data source copialo y pegalo en Server Name, cuando ingreses al servidor El nombre de tu base de datos es lo que esta en Initial Catalog.

    Saludos


    Pedro Ávila
    "El hombre sabio querrá estar siempre con quien sea mejor que él."
    Lima - Perú

    miércoles, 2 de agosto de 2017 1:14
  • Pues resulta que mi appconfig no tiene cadenas de conexión.

    <?xml version="1.0" encoding="utf-8"?>
    <configuration>
      <configSections>
        <!-- For more information on Entity Framework configuration, visit http://go.microsoft.com/fwlink/?LinkID=237468 -->
        <section name="entityFramework" type="System.Data.Entity.Internal.ConfigFile.EntityFrameworkSection, EntityFramework, Version=6.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" requirePermission="false" />
      </configSections>
      <startup>
        <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.5" />
      </startup>
      <entityFramework>
        <defaultConnectionFactory type="System.Data.Entity.Infrastructure.LocalDbConnectionFactory, EntityFramework">
          <parameters>
            <parameter value="mssqllocaldb" />
          </parameters>
        </defaultConnectionFactory>
        <providers>
          <provider invariantName="System.Data.SqlClient" type="System.Data.Entity.SqlServer.SqlProviderServices, EntityFramework.SqlServer" />
        </providers>
      </entityFramework>
    </configuration>

    miércoles, 2 de agosto de 2017 1:43
  • Pues resulta que mi appconfig no tiene cadenas de conexión.

    <?xml version="1.0" encoding="utf-8"?>
    <configuration>
      <configSections>
        <!-- For more information on Entity Framework configuration, visit http://go.microsoft.com/fwlink/?LinkID=237468 -->
        <section name="entityFramework" type="System.Data.Entity.Internal.ConfigFile.EntityFrameworkSection, EntityFramework, Version=6.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" requirePermission="false" />
      </configSections>
      <startup>
        <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.5" />
      </startup>
      <entityFramework>
        <defaultConnectionFactory type="System.Data.Entity.Infrastructure.LocalDbConnectionFactory, EntityFramework">
          <parameters>
            <parameter value="mssqllocaldb" />
          </parameters>
        </defaultConnectionFactory>
        <providers>
          <provider invariantName="System.Data.SqlClient" type="System.Data.Entity.SqlServer.SqlProviderServices, EntityFramework.SqlServer" />
        </providers>
      </entityFramework>
    </configuration>

    miércoles, 2 de agosto de 2017 1:44
  • Hola

    Buscalo en tu proyecto de capa de presentación


    Pedro Ávila
    "El hombre sabio querrá estar siempre con quien sea mejor que él."
    Lima - Perú

    miércoles, 2 de agosto de 2017 1:46
  • Pues bien, aunque las respuestas que me dieron Willams Morales y Pedro Ávila no fueron exactas, sí que tenían razón en una cosa: el dato que necesito esta en el appconfig; sin embargo la respuesta definitiva la obtuve de otro sitio.

    La clase DbContext, de la cual hereda el objeto con el que se hace la magia del Entity Framework (entiéndase comunicación con la base de datos), tiene una propiedad Database y esta a su vez tiene una propiedad Connection la cual tiene la propiedad DataSource de donde saque la información que necesitaba, solo puse un breakpoint justo después de instanciar el objeto y leí la propiedad.

    Gracias a quienes respondieron.

    • Marcado como respuesta jeduardonl miércoles, 2 de agosto de 2017 2:16
    miércoles, 2 de agosto de 2017 2:16
  • Hola

    Es correcto lo que dices depurando en el context puedes ver la cadena de conexión Database>ConnectionString

    Pero también fijate en la clase del contexto que hereda de DbContext

    public class FacContext : DbContext
        {
            public FacContext() : base("Billing")
            {
                
    
            }
        }

    En base esta el nombre de la key del connectionString del archivo App.config

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

    Saludos


    Pedro Ávila
    "El hombre sabio querrá estar siempre con quien sea mejor que él."
    Lima - Perú



    miércoles, 2 de agosto de 2017 2:47
  • El constructor de la clase base define dos parámetros, el primer parámetro es de tipo String: 'nameOrConnectionString' que como su nombre lo sugiere espera por un argumento que contenga la cadena de conexión o mejor aún la clave del elemento -en el archivo de configuración- que contiene la cadena de conexión. Lo recomendable es que contengas la cadena de conexión en el archivo de configuración, de hecho es lo que se espera y por eso supuse que es ahí donde encontrarías las credenciales de acceso, consideralo.


    Nuestra profesión exige tener pasión por resolver problemas de una manera óptima y eficiente.
    miércoles, 2 de agosto de 2017 2:48
  • Enterado, definitivamente esa información me será útil en el futuro aunque por ahora no estoy invocando el constructor base por lo que no cuento con ese parámetro, muchas gracias.
    miércoles, 2 de agosto de 2017 16:33
  • Entiendo, pero como mencione en un principio el código que estoy ejecutando lo copié de algún sitio en internet. También hice mención de que no soy experto en DB's y por lo tanto busque un ejemplo que no involucrara demasiada información que podría llegar a abrumarme. Este ejemplo que estoy ejecutando es bastante básico, solo contempla el código que adjunte y nunca toca o hace mención del archivo de configuración, y lo mejor de todo es que funciona. No podía avanzar al siguiente nivel en el cual se manipulen las cadenas de conexión sin haber comprendido por completo el caso más básico, esto es, saber donde el EF crea la DB por si mismo.

    Muchas gracias por tus respuestas, al igual que las de Pedro Ávila me han ampliado el panorama.

    Saludos

    miércoles, 2 de agosto de 2017 16:39