a

axeway

Usuario (Honduras)

Primer post: 18 sept 2011Último post: 12 ene 2017
4
Posts
34
Puntos totales
6
Comentarios
O
Operaciones con Entity Framework y VB.NET
InfoporAnónimo3/30/2013

USO BASICO DE ENTITY FRAMEWORK EN VB.NET Buscando la manera de usar entity framework en visual basic .net logre despues de mucho buscar encontrar un blog que explicaba las operaciones que necesitaba, pero, en c#! por lo que aqui vengo a compartirlo (y guardarlo para mi uso futuro) con el codigo ya convertido. El link a la pagina es: http://blogs.gamefilia.com/ollydbg/08-12-2012/51505/net-tutorial-57-introduccion-al-entity-framework-4 todos los creditos son del autor, yo solo converti el codigo. Ya hace bastante tiempo (Tutorial 22 y Tutorial 23) vimos como acceder a una base de datos y realizar las operaciones más comunes: Seleccionar Añadir Modificar Eliminar En aquellos tutoriales se realizaban las 4 acciones anteriores accediendo directamente a los campos de la base de datos y escribiendo "a mano" las sentencias SQL apropiadas para realizar cada acción. Hoy os mostraré una forma distinta (ni peor ni mejor, distinta) de como acceder a una base de datos y realizar 4 acciones básicas. Sin embargo, se usará lo que se conoce como ORM, o lo que es lo mismo: Nuestras tablas actúaran como "entidades", de tal forma que es posible acceder a todo el contenido de las tablas como si fuesen objetos. La principal ventaja de esto es que no es necesario acordarse "de memoria" de las sentencias SQL, además esta metodología permite muy facilmente realizar apicaciones de N-Capas, o incluso aislar la capa de datos de la capa de negocio y crear un repositorio para comunicarnos via WCF con cualquier otra aplicación. Antes de empezar dos cosas: Uno de los ORMs más conocidos puede que sea NHibernate. Es un ORM de código abierto y es la conversión del Hibernate de Java para .NET En ningún momento quiero dar a entender que NHibernate es mejor, peor, etc que Entity Framework 4 (hay un Entity Framework 5 disponible desde NuGet). Simplemente NHibernate existe desde antes de Entity Framework (Si la memoría no me falla, el Entity Framework se incluyó por primera vez con el SP1 del Visual Studio 2008) Entity Framework (EF) a priori solo sirve para trabajar contra SQL Server, mientras que NHibernate por ejemplo sirve para trabajar contra SQL Server, MySQL, Oracle, etc. Digo lo de "a priori" puesto que hay "conectores" para EF para trabajar con otros proveedores de base de datos distintos a SQL Server. Para esta entrada se usará el Entity Framework 4 disponible en Visual Studio 2010. No será necesario descargar ningún paquete adicional ni nada por el estilo. Puede que te sorprenda, pero esta entrada (y seguramente las siguientes) está escrita en C#. ¿Adios VB.NET? (bueno, ya veremos ) Por último, ignoro si lo que voy a explicar a continuación sirve para las versiones "Express" de Visual Studio, aunque me da que no es posible realizar esto en dichas versiones. La versión que se ha usado para esta entrada es VS 2010 Professional. Bien, comencemos. Crear un nuevo modelo desde cero Cuando añadimos un nuevo origen de datos nos encontramos con esta ventana: Seleccionaremos Base de datos y se muetra esta otra ventana: En este caso elegiremos Entity Data Model. Como observais a continuación es posible generar el modelo desde una base de datos (lo veremos luego) o generar un modelo vacio. En este primer ejemplo seleccionaremos que queremos usar un modelo vacio. A continuación se muestra la vista de diseño de nuestro modelo (vacio obviamente): En esa pantalla podremos ir agregando entidades (básicamente tablas), con sus respecitvos campos, relacciones, etc. Como se muestra a continuación es posible asociar campos de las distintas entidades: ...y determinar el comportamiento de dichas asociaciones: Con la asociación anterior, estamos creando una foreign key (FK) en la entidad PRECIOS, de tal forma que cuando se elimine un registro de la entidad CLIENTES, automáticamente se eliminarán los registros de PRECIOS cuyo cliente sea el que se ha eliminado de CLIENTES: Vamos, lo que se conoce como borrado en cascada de un FK de toda la vida. Podemos añadir mas entidades, campos, etc. Todo ello de forma visual y bastante intuitiva: Una vez finalizado el diseño, podemos, a partir de dicho diseño, decirle a Visual Studio que genere un script para realmente tener esa base de datos en nuestro servidor SQL Server: Si no teniamos la conexión de datos, podemos crear una nueva conexión: Indicamos Microsoft SQL Server: Establecemos los datos de nuestra conexión e indicamos el nombre de la Base de datos a crear: Visual Studio nos indica que la base de datos no existe y si queremos crearla: Pulsamos en Siguiente: Y en esta pantalla se está construyendo el script para la generación de la base de datos: Una vez generado el script se muestra tal que así y se genera un nuevo archivo en nuestra solución: Desde el propio Visual Studio se puede ejecutar el script: Si accedemos a nuestro SQL Server mediante el Management Studio, vemos que efectivamente, se ha creado la base de datos y dentro de ella están las tablas de nuestro módelo que diseñamos desde Visual Studio: Obtener un modelo de entidades desde una base de datos existente Para este ejemplo usaré una base de datos de ejemplo que proporciona Microsoft, en este caso la base de datos AdventureWorks Puedes encontrar dicha base de datos en esta dirección: http://sqlserversamples.codeplex.com/ En el asistente del modelo, escogeremos Generar desde base de datos: Si no tenemos una conexión establecidad, pulsaremos en el botón Nueva conexión y se mostrará esta ventana: De nuevo en la pantalla del asistente dejaremos los datos tal así: El asistente recupera toda la información de la base de datos (tablas, vistas y stored procedures). Para este ejemplo usaremos únicamente la tabla CreditCard: Finalmente Visual Studio genera la entidades correspondientes y nos las muesrta en nuestra vista de diseño. Si abrimos dicha tabla con el Visual Studio o con el Management Studio observamos todos los datos que contiene dicha tabla: Seleccionar registros del modelo En nuestro formulario creamos una plantilla con los siguientes controles: Lo primero que haremos será definir una variable privada llamada dbEntity de esta forma: Private dbEntity as AdventureWorks2008R2Entities; Y en el form load la inicializaremos así: dbEntity = New AdventureWorks2008R2Entities(); Nota: Ya que se que se podría haber usado un using dbEntity as new AdventureWorks2008R2Entities, pero a efectos del tutorial lo voy a dejar tal como está. Bien, al pulsar en el botón "Buscar" se recuperarán los datos de aquella tarjeta cuyo campo "CardNumber" sea el especificado en la caja de texto. En el evento click del botón escribimos lo siguiente: Si observáis, la "gracia" de este asunto es que en el propio Intellisense se nos muestran todos los objetos de la entidad. Lo mismo ocurre cuando queremos asignar el valor de un propiedad a un control: El código final sería este: Private Sub buttonBuscar_Click(sender As Object, e As EventArgs) Dim tarjeta As CreditCard = dbEntity.CreditCards.FirstOrDefault(Function(x) x.CardNumber = txtNumeroTarjeta.Text) If tarjeta IsNot Nothing Then lblID.Text = tarjeta.CreditCardID.ToString() txtTipo.Text = tarjeta.CardType mskMesCaducidad.Text = tarjeta.ExpMonth.ToString() mskAñoCaducidad.Text = tarjeta.ExpYear.ToString() dTPModificacion.Value = tarjeta.ModifiedDate Else MessageBox.Show("No existe ninguna tarjeta con el código " + txtNumeroTarjeta.Text) End If End Sub Ejecutamos la aplicación y comprobamos que es lo que sucede al introducir un Numero de tarjeta: Efectivamente, vemos como se recuperan los datos y se colocan en los controles correspondientes. Añadir un registro Añadimos un nuevo botón a nuestro formulario para dar de alta una nueva tarjeta. En coódigo del evento click escribimos lo siguiente: De nuevo observar que en el propio intellisense se muestran todos los campos de la "entidad" correspondiente. El código completo es el siguiente: Private Sub btnNuevaTarjeta_Click(sender As Object, e As EventArgs) Dim nuevartarjeta As New CreditCard() With { _ Key .CardNumber = txtNumeroTarjeta.Text, _ Key .CardType = txtTipo.Text, _ Key .ExpMonth = Convert.ToByte(mskMesCaducidad.Text), _ Key .ExpYear = Convert.ToInt16(mskAñoCaducidad.Text), _ Key .ModifiedDate = dTPModificacion.Value _ } dbEntity.AddToCreditCards(nuevartarjeta) 'dbEntity.CreditCards.AddObject(nuevartarjeta); dbEntity.SaveChanges() MessageBox.Show("La tarjeta se ha añadido a la base de datos" End Sub Lanzamos la aplicación y verificamos: Al pulsar en el botón "Nueva" se guarda el registro. si verificamos los datos en la propia tabla vemos que efectivamente, el nuevo registro está en la tabla: Eliminar un registro El código para eliminar un registro, a partir del campo CardNumber es el siguiente: Private Sub btnEliminarTarjeta_Click(sender As Object, e As EventArgs) Dim borrartarjeta As CreditCard = dbEntity.CreditCards.FirstOrDefault(Function(x) x.CardNumber = txtNumeroTarjeta.Text) dbEntity.DeleteObject(borrartarjeta) dbEntity.SaveChanges() MessageBox.Show("La tarjeta se ha borrado de la base de datos" End Sub Modificar un registro Private Sub btnModificarTarjeta_Click(sender As Object, e As EventArgs) Dim modificartarjeta As CreditCard = dbEntity.CreditCards.FirstOrDefault(Function(x) x.CardNumber = txtNumeroTarjeta.Text) modificartarjeta.CardType = txtTipo.Text.Trim() modificartarjeta.ExpMonth = Convert.ToByte(mskMesCaducidad.Text) modificartarjeta.ExpYear = Convert.ToInt16(mskAñoCaducidad.Text) modificartarjeta.ModifiedDate = dTPModificacion.Value dbEntity.SaveChanges() MessageBox.Show("Se ha modificado los datos de la tarjeta: " + txtNumeroTarjeta.Text) End Sub Mostrar datos en un GridView Este código muestra los datos en un gridview de todas aquellas tarjetas cuyo campo "año de caducidad" es un determinado valor y además se muestran los datos ordenados por "numero de tarjeta": Private Sub btnVer_Click(sender As Object, e As EventArgs) Dim vMes As Short = Convert.ToInt16(mskVerAño.Text) Dim query = From c In dbEntity.CreditCards Where c.ExpYear = vMesOrder By c.CardNumberc Dim tarjetas = query.ToList() dGWver.DataSource = tarjetas End Sub El resultado sería similar a este: Ejecutar un "select" con una instrucción SQL Aunque mediante LINQ es casi improbable que sea innecesario ejecutar una consulta SQL lo podemos hacer usando el método ExecuteStoreQuery Un ejemplo: Private Sub btnSQLNativa_Click(sender As Object, e As EventArgs) Dim query As String = "SELECT * FROM Sales.CreditCard WHERE ExpYear=2006 AND CardNumber LIKE '%1111138%'" Dim tarjetas = dbEntity.ExecuteStoreQuery(Of CreditCard)(query) For Each item As var In tarjetas Console.WriteLine("{0} {1}", item.CardNumber, item.ExpYear) Next End Sub Ejecutar un "insert", "delete", o "update" con una instrucción SQL Se pueden ejecutar comandos usando sentencias "nativas" mediante el comando ExecuteStoreCommand Un ejemplo: Private Sub btnCommandNativo_Click(sender As Object, e As EventArgs) Dim query As String = "DELETE FROM Sales.CreditCard WHERE CardNumber ='123'" Dim cnt = dbEntity.ExecuteStoreCommand(query) Console.WriteLine(cnt) End Sub En el ejemplo anterior, si hay un registro con el valor CardNumber = '123' en la base de datos, éste se borra y el valor de cnt será igual a 1 (si se ha borrado 1 registro) o 44 (si se han borrado 44 registros) Como se ve, el uso de un ORM, Entity Framework en este caso es realmente sencilla, y clara. Además, te evitas estar "re-inventado la rueda" para el tema del acceso a datos. Bueno, esto era una introducción. Entity Framework y en general cualquier otro ORM es mucho más complejo. De todos modos, se tenéis alguna duda, pues ya sabéis, usad los comentarios.

10
2
U
Unrecognized Database Format, y Visual NET
Ciencia EducacionporAnónimo11/13/2012

Algunas causas y posibles soluciones cuando al hacer la conexión nos dice "Unrecognized database format". Antes que nada, en sistemas de 64 bit es necesario tener instalado uno de los paquetes (creo que el de 64bit) disponibles por parte de microsoft: http://www.microsoft.com/download/en/details.aspx?id=13255 EL PROBLEMA Hace poco, intentando hacer una conexión desde VB.NET 2012 a una base de datos ACCESS 2010, me encontré con el típico error de "the 'microsoft.ace.oledb.12.0' provider is not registered on the local machine"; fue fácil de solucionar buscando el paquete que señale arriba. Pero la cosa no termino allí, no... tenia que ser mas difícil... Al crear la conexion ahora me aparecia el mensaje: "Unrecognized Database Format" Fui optimista... pero no encontré una solución en la red, al final, la encontré por mi mismo y quería compartirla, ademas de recordarla. La base de datos no estaba dañada, ni era de un formato desconocido, era simple, aunque extraño; es decir, mas bien un bug. LA SOLUCION Pensando y analizando las cosas después de intentar reparaciones, borrar tablas, borrar campos, dejar solo una tabla, eh incluso ninguna tabla; seguía apareciendo el dichoso mensaje. Tal vez estaba dañado el motor ACE, pero no... funcionaba con otra base de datos, y los otros motores de base de datos también mostraban el mismo error. -Cree una nueva base de datos, y le añadí una tabla, funcionaba! -Entonces borre la tabla y copie solo una tabla de mi otra base de datos a esta nueva, funcionaba! -Pues, pensaba tenerlo solucionado, las copie todas! No funcionaba... otra vez el mensaje... Pensé en microsoft... probé algunas soluciones... nada... pero volví a pensar en microsoft, y dije... INCOMPATIBILIDAD Claro! tenía todo en 64 bit, y la aplicación estaba configurada para "any" en plataforma de destino, pues, lo cambie a 32 bits únicamente. Y voala! hurra! Otra vez el mensaje... Pero yo estaba convencido de que Access era el problema... sin olvidar la incompatibilidad y la cantidad de bugs que eh encontrado en Access (a pesar del ser el 2010). Entonces deje todo tal y como estaba, y me concentre en la base de datos: -Quitar macros ERROR -Quitar macros y copiar todo a una base de datos "frezca" ERROR siempre... -Tomar la base de datos "frezca" y eliminar todos los datos calculados, campos de lista, multiples ERROR -Copiar todo a OTRA base de datos frezca (Es decir, nueva, que nunca haya tenido nada) FUNCIONA!!!! Descubrí el error, la base de datos se vuelve totalmente incompatible para la conexión si tiene (o ha tenido, extraño pero comprobado) macros o campos calculados. Si, las macros y campos calculados son incompatibles. Solo eso!, lo demás lo he comprado, cada cosa por separado, y no funciona la base de datos aunque estas funciones especiales se eliminen, pero es recuperable si se copia todo a otra base de datos nueva una vez eliminada la incompatibilidad. Alguna otra incompatibilidad, agradecería me lo dijeran, así la evito siempre. RESUMEN La solución es: -Eliminar las macros y campos calculados. -Crear una nueva base de datos. -Copiar las tablas (informes, formularios y consultas de tenerlas) a la nueva base de datos. -Comprobar la conexión con la nueva base de datos. Espero le sirva a alguien y le ahorre algo de tiempo con la solución.

1
0
Skydrive desde el equipo sin software adicional
Skydrive desde el equipo sin software adicional
Hazlo Tu MismoporAnónimo9/18/2011

Hay ciertas soluciones de software para utilizar Skydrive con conexion usando el explorador de Windows.Pero existe un metodo mas comodo y eficaz; y es el siguiente:REQUISITOS:- Activar la deteccion de redes y archivos compartidos (conviene hacerlo en una red privada).- Windows 7 (ya que es el unico en el que lo he probado)- Un Windows Live ID- Ciertos conocimientos de sobre SkyDrive, Internet y Windows 71.) Para iniciar el proceso nos dirigimos a Equipo, click derecho y agregar ubicacion de red: 2.) Damos siguiente, siguiente (o en perzonalizada) y es aqui donde se nos pedira la direccion de red; en direccion de red ponemos: dijo:\\docs.live.net@SSL\ID donde cambiamos ID por nuestro codigo >cid< que aparece al conectarnos con el explorador web a SkyDrive. NOTA: La direccion de red: \\docs.live.net@SSL\122055r36f5g7321 incluye solamente dos contraplecas al principio y una despues de SSLPor ejemplo en esta direccion dijo:"https://skydrive.live.com/#!/?cid=122055r36f5g7321" copiaremos "122055r36f5g7321" y lo pegaremos en lugar de ID en la direccion de red. Por ultimo nos quedara asi:dijo:\\docs.live.net@SSL\122055r36f5g7321NOTA: La direccion de red: \\docs.live.net@SSL\122055r36f5g7321 incluye solamente dos contraplecas al principio y una despues de SSL(De esta manera se accede a todo el espacio de skydrive y todas sus carpetas, pudiendo editar o añadir archivos.) 3.) Le damos a siguiente despues de proporcionar nuestros datos de acceso (Windows Live ID) y se nos pedira el nombre que queremos darle a la direccion, ponemos lo que queremos, finalizar y listo. 4.) Disfrutamos de comodidad al tener 25GB extra y disponibles en cualquier lugar con acceso a Internet. Les deseo lo mejor!NOTA: La direccion de red: \\docs.live.net@SSL\122055r36f5g7321 incluye solamente dos contraplecas al principio y una despues de SSL (Note algunos errores en el formato de Taringa). NO desactivar la deteccion de Redes y recursos compartidos.

20
6
[
[Solución] Windows 10 Windows Update
Hazlo Tu MismoporAnónimo1/12/2017

"Un problema que lleva ya mucho tiempo'' Es un placer dejar esta estupenda solución al problema que acata Windows 10 con sus actualizaciones obligatorias y las implicaciones de esto, como ser: Controladores que se actualizan y dejan de funcionar, sobre todo las tarjetas gráficas.Enormes descargas que inutilizan tu Internet y hacen que todo vaya lento si no tienes un ancho de banda exagerado.Descarga empieza justo en tu partida en linea de cualquier juego.Te urge utilizar la computadora pero esta empieza a instalar las actualizaciones al encender. Microsoft no toma un paso adelante, por demasiado tiempo, en la verdadera personalización de tus actualizaciones con estos métodos: descargar solo con la pc inactiva, elegir cuando descargar y actualizar exactamente, que actualizar y que no, establecer un limite de ancho de bando para la descarga (muy importante cuando hay varias PC en la misma LAN). Es por esto que personalmente vengo desactivando completamente las actualizaciones automáticas desde mi primer día con Windows 10, efecto contrario a lo que ellos querían lograr, cuando antes actualizaba mi sistema cada cierto tiempo voluntariamente y después de elegir cuales actualizaciones instalar debido a que el humano ni la maquina son perfectos y algunas actualizaciones pueden perjudicarte (Hola controladores). A continuación la solución, espero te sea de utilidad, para mi lo sera si llego a olvidar lo que tenia que hacer. SOLUCION Para empezar debes saber que algunos de los pasos de esta solución solo son posibles con Windows 10 pro y similares, y no la versión mas básica, ademas, debes ser administrador. Solución básica y flexible (con esto se impide que se busquen y descarguen actualizaciones, pero esto no detiene una actualización en curso ni bloquea la capacidad de actualizar manualmente, para detener actualizaciones en proceso pásate a siguiente solución): 1.- Dirigirte al menú inicio, buscar ''editar directiva'' y abre el programa. 2.- Una vez dentro, debes dirigirte a plantillas administrativas, luego componentes y por ultimo, bien abajo, Windows Update, dentro das click derecho en ''Configurar actualizaciones automáticas'' y editar. 3.- Esta propiedad nos permite desactivar sin mucho problema después de aceptar los cambios. Solución avanzada (con esta puedes detener actualizaciones en curso, y así, puedes recuperar tu Internet) 1.- De nuevo buscamos en menú inicio, esta vez, ''servicios'' 2.- Dentro del administrador de servicios nos dirigimos a ''optimización de entrega'' (puedes buscar escribiendo las primeras letras) 3.- Damos click derecho en este servicio que se encarga de administrar la descarga de las actualizaciones y nos vamos a propiedades, dentro, lo deshabilitamos y lo detenemos si no lo hemos hecho. 4.- Lo anterior detuvo la descarga hasta que el servicio de windows update la vuelva a iniciar, para evitarlo, le hacemos lo mismo, lo mandamos a dormir con los peces. 5.- Deshabilitar y detener de ser necesario Con esto, puedes olvidarte de actualizaciones molestas y hacerlas por tu cuenta habilitando de nuevo los servicios y entrando a Windows Update para ''Buscar Actualizaciones'' (no recomiendo dejar de actualizar, esto protege de virus, mejora el rendimiento, agrega características para bien o para mal pero ahora puedes elegir cuando, aunque lamentablemente, no puedes elegir QUE). Puedes comprobar que las descargas de Windows Update están detenidas de esta manera: Por último, recuerda actualizar Windows Defender con regularidad. ¡A favoritos si te sirvió! ¡Cuídate!

3
1
PosteameloArchivo Histórico de Taringa! (2004-2017). Preservando la inteligencia colectiva de la internet hispanohablante.

CONTACTO

18 de Septiembre 455, Casilla 52

Chillán, Región de Ñuble, Chile

Solo correo postal

© 2026 Posteamelo.com. No afiliado con Taringa! ni sus sucesores.

Contenido preservado con fines históricos y culturales.