En busca de ejemplos de aplicaciones MVC de ASP.NET con Entity Framework




 ¿Hay ejemplos de código abierto de aplicaciones MVC de ASP.NET que utilicen Entity Framework? He encontrado que [Nerd Dinner](http://www.nerddinner.com/) es útil, pero está usando Linq to SQL. 

 Estoy tratando de usar Entity Framework en un proyecto MVC de ASP.NET fuertemente tipado y estoy descubriendo que cualquier cosa más allá del simple tutorial se vuelve bastante difícil de implementar. Estoy pensando que si pudiera ver un código de ejemplo un poco más complejo, eso me ayudaría mucho. Estoy particularmente interesado en los ejemplos que son "del mundo real" y tengo que lidiar con varias tablas de datos al realizar la entrada / actualización de datos. ¿Alguien está familiarizado con una buena fuente para esta información? 

 Hasta ahora, en mi experiencia, no he usado mucho ASP.NET MVC, pero he estado utilizando Entity Framework durante aproximadamente 8 meses.
El equipo de EF, junto con P&P, se encuentra actualmente en el proceso de desarrollar una implementación de referencia de acceso a datos de EF (versión 4) que utiliza ASP.NET MVC como la interfaz. 

 El proyecto estará disponible de forma iterativa en CodePlex aquí: 

 <http://dataguidance.codeplex.com/> 

 Aún no hemos hecho nuestra primera fuente, pero ocurrirá en las próximas semanas. 

 ACTUALIZACIÓN: ahora hemos eliminado el código; tenga en cuenta que debe considerarse de calidad alfa y está sujeto a cambios.
*Nota: la respuesta se proporcionó en un comentario en la pregunta original. Solo le estoy agregando un poco aquí, para hacerlo más visible y claro.* 





 Entity Framework obviamente asigna clases de C # a tablas de bases de datos a través de propiedades que representan las distintas columnas en cada tabla. Ahora, si el tipo de datos de una de estas propiedades no es compatible con el tipo de datos de su columna correspondiente en la base de datos, obtendrá una `System.InvalidCastException` cuando intente recuperar algo de esa tabla, incluso si la propiedad no coincide no está directamente involucrada en la búsqueda 

 En la pregunta, la consulta fue: 


```
User user = context.Users.First(i => i.UserId == id);

```
  No importa que tanto `id` como su propiedad correspondiente `UserId` sean válidas y compatibles entre sí aquí, porque lo que se está buscando es una instancia de toda la clase de `User` . 

 Aparentemente, el tipo de alguna otra propiedad en el `User` es incompatible con el tipo una columna con el mismo nombre en la tabla de `user` en la base de datos, por lo que el intento de mapearlo arroja la excepción anterior. Si, si que podrás.   
ASP permite la conexión con bases de datos siempre y cuando estas tengan un driver ODBC, que access tiene en el sistema por defecto, así que podrás hacer cnsultas SQL a la base de datos, y si no me equivoco también a los ficheros Excel. Lo que te recomiendo es que te pases por [http://msdn.microsoft.com](https://msdn.microsoft.com/) y busques toda la información allí pues es donde mejor te pueden informar  
En cuanto a saber más de asp tienes   
[http://www.aspin.com](http://www.aspin.com/)  
A la base de datos puedes acceder o bien sabiendo el path o mediante un DSN que puedes asignarle a la base de datos en el sistema. Este ultimo es el método más cómodo.  
Si, puedes probarlo en un ordenador local ya sea windows ME, 9X o 2000, pues todos tienen su servidor web así como el interprete de ASP en el sistema.  
Espero haberte ayudado,  
un saludo. El código de EF Core es exactamente el mismo. 


```
DbContext.Database.BeginTransaction(IsolationLevel.Snapshot);

```
  La única diferencia es que en EF Core el [método con nivel de aislamiento](https://docs.microsoft.com/en-us/dotnet/api/microsoft.entityframeworkcore.relationaldatabasefacadeextensions.begintransaction?view=efcore-2.1) (como muchos otros) es un método de *extensión* , definido en la clase [RelationalDatabaseFacadeExtensions](https://docs.microsoft.com/en-us/dotnet/api/microsoft.entityframeworkcore.relationaldatabasefacadeextensions?view=efcore-2.1) , y lo más importante, ubicado en [Microsoft.EntityFrameworkCore.Relational](https://www.nuget.org/packages/Microsoft.EntityFrameworkCore.Relational/) ensamblado. 

 Entonces, si ha `using Microsoft.EntityFrameworkCore;` y no lo vea, agregue referencia al ensamblado / paquete `Microsoft.EntityFrameworkCore.Relational.dll` . bueno en mi caso estoy terminando la ingenieria pero en mi carrera haces 2 estadias. cuando sali de tecnico tuve que ir a una empresa que desarrollaba software y obiamente me las vi duras por que usaban muchos frameworks (importante practicarlos muchas empresas los muy en cuenta) que no conocia de java y para el colmo no era bueno programando pero si algo aprendi fue lo siguiente. 

1. estudia (lee manuales, practica sus ejemplos, analiza el codigo y berifica linea por linea que paso o como lo obtuvo la maquina, si existe alguna propiedad que no entiendas, buscala. realiza anotaciones en tu codigo para que recuerdes como es la sintaxis o que hace cada linea hasta que te acostumbres. describe tus metodos y clases). 

2. no todo es programación. recuerda que muchas empresas realizan productos o servicios que estan relacionados con otros a su vez y que ya estan hechos cuando tu llegas, por lo que debes adaptarte al flujo que toman. debes analizarlo muy buen preguntar preguntar y preguntar lo que haga falta para que lo comprendas y por nada del mundo te quedes 1 hora estancado en algo por no preguntar. 

3.bases de datos. aprendelas muy bien por que las vas a necesitar igual y aveces se pasa de largo. 

4.orientate. debes saber bien el enfoque al que pretendes trabajar en el futuro (desarrollador web, aplicaciones moviles, juegos,realidad virtual, etc). y dar un porcentaje mas de tu tiempo a ese sector, recuerda "el que mucho abarca poco aprieta". 

5. frameworks. como dije antes muchas empresas usan muchos frameworks ya que lo que se espera es optimizar los procesos por lo que debes de aprender los mas utilizados o famosos (como jquery en javascrip, bootstrap, spring en java, hibernate para bases de datos, zk en aplicaciones web, etc).

6. ide. aprende los mas famosos, nunca sabes que entorno de desarrollo encontraras en tu estación de trabajo (eclipse, netbeans, visual studio, sublime text, android studio, etc). y no siempre podras cambiarlo por que tu usas y desconocerlos puede causarte atrasos.

bueno eso es lo que puedo decirte, pero en general cuando le agarras la onda y le pierdes el miedo veras que todo se te va a ir asiendo costumbre. buen dia. Hi,  
 Mira, lo que estoy acostumbrado a utilizar para confeccionar carritos de compras es un servidor web Apache y el lenguaje de programación PHP.  
 Para poder armar el carrito debes instalar Apache www.apache.org(software libre) y PHP www.php3.org (software libre) en un Linux anda mejor o en Windows es más fácil.  
 También se puede confeccionar un carrito de compras baja otros lenguajes de programación como ASP (muy utilizado en sistemas "Microsoft").  
 Si necesitas más información no dudes en preguntarme. <p>la implementación <a href="https://pypi.org/project/markdown/">markdown en python</a> tiene soporte para extensiones, una de las cuales incluye la generación de tabla de contenido. además <a href="http://johnmacfarlane.net/pandoc/">pandoc</a> (que es un marcado de haskell-&gt; pdf tiene soporte para markdown (además de un montón de otros formatos) y puede generar bastante html, latex, pdf, etc.</p> Básicamente hay varias cosas que puedes hacer. 

* usando `SqlBulkCopy.WriteToServer` que no funciona muy bien junto con EF, sin embargo, existen varios intentos para crear extensiones
* utilizando un procedimiento almacenado que tomará un registro grande y lo dividirá de acuerdo con alguna lógica
* utilizando parámetros de procedimiento almacenado escritos en la tabla y realice una llamada al procedimiento almacenado (y varias `insert ... select` dentro del procedimiento almacenado)

 En general, prefiero la tercera opción. 

 Marque esta pregunta [Entity Framework Stored Procedure Tabla Valor Parámetro](https://stackoverflow.com/questions/8157345/entity-framework-stored-procedure-table-value-parameter) Si quieres empezar a programar, también depende un poco del tipo de aplicaciones que puedes hacer.  
Bueno, yo te recomiendo dos lenguajes que más o menos sirven tanto para aprender como para empezar a trabajar con ellos y hacer cositas interesantes.  
Uno de ellos es Visual Basic. Es un lenguaje bastante fácil de aprender, aunque ya para meterse en cosas complicadas requiere mayor conocimiento, pero yo empezaría aprendiendo VB. Para trabajar con BBDD es de los más sencillos que hay. Luego tiene "vertientes" de este lenguaje como lo es ASP y VBScript, que se centran en programación web.  
El otro lenguaje (por llamarlo lenguaje) es HTML. Con este lenguaje aprendes a hacer una página web. Pero lógicamente, no creo que te conformes con hacer una web simple. Para poder hacer una web (más o menos profesional) tienes que meter scripts y bses de datos y cosas así.  
Para la programación orientada a web tienes Javascript, VBSccript (que son más o menos igual), y luego lo que se llama CGI, como lo son Perl y PHP. Estos lenguajes también son más o menos sencillos en medida a lo que quieras hacer.  
Y luego tienes lo que es ASP y JSP, que uno viene de VB y el otro de Java.  
Bueno, resumiendo, yo empezaría con VB para pillar un poco de metodología y saber más o menos como funciona el tema de la programación. Luego ya, dependiendo de lo que más te guste, puedes declinarte por aplicaciones tipo VB, o hacer aplicaciones web, entonces tendrías que aprender como mínimo HTML y Javascript. El resto siempre se aprende con tiempo y de curiosear webs ya hechas.  
En cuanto a bases de datos, empezaría por SQL y acabaría por Oracle.  
Quizá te estoy metiendo aquí mucha bulla, pero bueno, yo te cuento y luego tu eliges que es lo que más te apetece hacer.  
Si quieres más información sobre estos lenguajes de programación, puedes consultar en la web del programador [http://www.lawebdelprogramador.com](http://www.lawebdelprogramador.com/) hola, busca en la web el satmanager anda muy bien, es un lindo soft y barato en taninga tenes un demo, para que lo pruebes. saludos Una opción es ir a ver el showcase de PhoneGap (que es una distribución de Cordova hecha por Adobe). Para ver aplicaciones hechas con esta plataforma, <http://phonegap.com/app/feature/> es un buen sitio por donde empezar.

Aunque un poco desfasada en esta página Who Uses PhoneGap/Apache Cordova? Hay unos cuantos ejemplos de grandes desarrolladores que han hecho aplicaciones sobre esta plataforma: Wikimedia, Facebook, IBM, Microsoft, Zynga...

Además cuenta con el apoyo de Microsoft y Adobe entre otros y el código está bajo el auspicio de la Apache Foundation, lo que le da gran credibilidad y visibilidad al proyecto.

Como ventajas de usar Cordova: poder usar HTML, CSS y Javascript y que se puede hacer una aplicación y desplegarla en múltiples plataformas con muy poco sobrecoste.

Como desventaja, que al usar estos lenguajes se necesita una capa de abstracción que hace las aplicaciones más lentas y a la vez limita el acceso a las APIs de bajo nivel de los distintos dispositivos. Las limitaciones concretas las desconozco.

En resumen, si se quiere realizar un desarrollo sin tener que aprender nuevos lenguajes y a la ver poder tener la aplicación lista en varias plataformas a la vez a cambio de perder un mejor acabado, rendimiento y funcionalidades exclusivas de cada dispositivo es una buena opción.