none
Todos lo piensan y nadie se atreve a preguntar RRS feed

  • Pregunta

  • Hola

    A ver si ahora que empieza a invadirnos el espiritu de la navidad, cuando todo son gestos de  buenas intenciones, y el amor inunda los corazones de los hombres de buena voluntad, alguien dedica un tiempo a sacarme del pozo de la ignorancia y da respuesta a estas preguntas.

    1 ¿Cual es el motivo (aparte de crear confusion en los novatos como yo) de que se haga una copia de la base de datos en bin/debug y otra en el directorio de la aplicacion, que para mas desconcierto no graban la misma cosa ?

    2 ¿Se puede tener la base en otro directorio como se ha hecho toda la vida?

    3  La cadena de conexion ¿a cual apunta? porque en configuracion pone Provider=Microsoft.ACE.OLEDB.12.0;Data Source=|DataDirectory|MiBase.accdb

    Y 4 Cuando creamos el origen de datos y nos pregunta si queremos copiar la base en el directorio de la aplicacion ¿Que hay que contestar, Sí o no? de una vez por todas .p

    Si conoceis algun enlace donde haya informacion sobre esto....porque si pulsamos F1 cuando nos hace la pregunta...francamente, ¿vosotros entendeis lo que dice alli?

    Bueno amigos, aprovecho la ocasion para desearos a todos unas muy felices navidades y daros las gracias por la ayuda que he recibido en este foro, sin la cual la transicion de VB6 a .NET hubiese sido mucho mas dificil.

    Gracias y ¡feliz Navidad!

    viernes, 4 de diciembre de 2015 23:08

Respuestas

  • Aun queda la sombra de ¿Por que dos copias de la misma base de datos?.

    Es para hacer las pruebas. Cuando estás corriendo la aplicación desde Visual Studio, se supone que no está en producción, sino que la estás probando. Durante la prueba, se añaden, borran y modifican registros. Y si algo falla, tienes que volver al fuente, corregirlo, y repetir la misma prueba a ver si ya funciona. Para lograr que la prueba sea repetible, se requiere partir exactamente de la misma información inicial (no la que quedó a medio modificar durante la prueba anterior). Por eso, de forma determinada, se duplica una copia de la base de datos inicial sobre el directorio en el que se va a hacer la prueba, para que la prueba parta de los mismos datos.

    Si no quieres operar de esta manera, siempre puedes desactivar esa opción y apuntar la cadena de conexión a una una única base de datos fija ubicada en donde te interese tenerla. Pero en este caso, tu proyecto de pruebas unitarias tendrá que contener un inicializador de base de datos para partir de datos conocidos, o bien tendrás que usar un repositorio con un fake e inyección de dependencias, cosa que es buena y aconsejable, pero mucho más compleja que simplemente copiar la base de datos y por eso esta última técnica es la que viene habilitada por defecto para los proyectos sencillos.

    sábado, 5 de diciembre de 2015 8:25

Todas las respuestas

  • Hola:

     1. Normalmente se apunta a Bin/Debug cuando distribuirás tu aplicación con la Bd y no quieres meterte en líos de definir una carpeta en una unidad que probablemente no existirá en la maquina cliente. Puedes definir otro directorio si a si lo deseas, esto no afectara en nada

    2. Si, toda la vida eso dependerá de quien.

    3. Cuando la cadena contiene DataDirectory eso significa que esta tomando la base de datos en el mismo directorio de ejecución de la aplicación, en lugar de usarlo puedes reemplazarlo por el directorio donde deseas ubicar tu BD

    4. Si no quieres usar el DataDirectory entonces dile que no y tu mismo ubicas el archivo de Bd donde desees, armas la cadena de conexión en base a ese directorio y listo a trabajar sin problemas, solo que cuando distribuyas tu aplicación asegurate que la ruta exista en la maquina destino y todo trabajara normal.


    Saludos desde Monterrey, Nuevo León, México!!!

    viernes, 4 de diciembre de 2015 23:20
  • hola

    >>¿Cual es el motivo (aparte de crear confusion en los novatos como yo) de que se haga una copia de la base de datos en bin/debug y otra en el directorio de la aplicacion, que para mas desconcierto no graban la misma cosa ?

    El motivo simplemente es porque estas en un entorno de debug y cuando compilas la ejecucion se lleva al bin/debug

    la base de datos por ser parte del proyecto se le aplican las mismas reglas

    pero si quieres evitar este efecto cambia la configuracion del connection string para que use el archivo de la db que tienes a nivel del proyecto

    [Visual Studio] Base de Datos integradas al proyecto


    >>¿Se puede tener la base en otro directorio como se ha hecho toda la vida?

    claro por supuesto, esto lo defines en el connection string

    >>La cadena de conexion ¿a cual apunta?

    si usas el DataDirectory a la carpet adonde ejecuta la aplicacion

    al inicias desde el VS entonces sera el bin/debug, ahora si ejecutas desd eel .exe sera donde se encuentre

    >>Cuando creamos el origen de datos y nos pregunta si queremos copiar la base en el directorio de la aplicacion ¿Que hay que contestar, Sí o no?

    un origen de datos ? te refieres a un Dataset Tipado, o sea un .xsd ?

    la verdad es que no recuerdo haber visto nunca esa pregunta al crear conexiones a datos

    saludos


    Leandro Tuttini

    Blog
    MVP Profile
    Buenos Aires
    Argentina

    viernes, 4 de diciembre de 2015 23:34
  • Gracias a ambos por contestar.

    Aun queda la sombra de ¿Por que dos copias de la misma base de datos?. Cuando tengan miles de apuntes es absurdo tener dos bases de datos ocupando espacio a menos que la intencion sea tener una copia de respaldo.

    Seguro que la intencion es otra, pero no alcanzo  a entenderlo.

    sábado, 5 de diciembre de 2015 0:40
  • Aun queda la sombra de ¿Por que dos copias de la misma base de datos?.

    Es para hacer las pruebas. Cuando estás corriendo la aplicación desde Visual Studio, se supone que no está en producción, sino que la estás probando. Durante la prueba, se añaden, borran y modifican registros. Y si algo falla, tienes que volver al fuente, corregirlo, y repetir la misma prueba a ver si ya funciona. Para lograr que la prueba sea repetible, se requiere partir exactamente de la misma información inicial (no la que quedó a medio modificar durante la prueba anterior). Por eso, de forma determinada, se duplica una copia de la base de datos inicial sobre el directorio en el que se va a hacer la prueba, para que la prueba parta de los mismos datos.

    Si no quieres operar de esta manera, siempre puedes desactivar esa opción y apuntar la cadena de conexión a una una única base de datos fija ubicada en donde te interese tenerla. Pero en este caso, tu proyecto de pruebas unitarias tendrá que contener un inicializador de base de datos para partir de datos conocidos, o bien tendrás que usar un repositorio con un fake e inyección de dependencias, cosa que es buena y aconsejable, pero mucho más compleja que simplemente copiar la base de datos y por eso esta última técnica es la que viene habilitada por defecto para los proyectos sencillos.

    sábado, 5 de diciembre de 2015 8:25
  • Perfectamente claro. De nuevo, y como no podia ser de otra manera, la logica del lado de VB.

    Gracias y feliz navidad.

    sábado, 5 de diciembre de 2015 9:20