none
EF o Codigo Convencional RRS feed

  • Pregunta

  • Estimados,
    Me encuentroen una duda existencial...

    No se por cual decidirme

    Entity Framework armar una APP 100% con herramientas graficas

    o Progrmar todo en codigo obviamente sirviendome del IDE pero evitando EF Model etc etc etc

    miércoles, 12 de marzo de 2014 1:16

Respuestas

  • Hola,

    Esa duda entre ADO-NET, Database-First o Code-First la hemos tenido unos cuantos entre los que me incluyo :)

    Estaría bien conocer más datos, para poder orientarte mejor.

    • Que tipo de aplicación es?
    • Que tecnología vais a usar para desarrollarla?
    • El rendimiento es un factor clave?
    • Vais a usar SQL SERVER?
    • En caso afirmativo, vais a utilizar características avanzadas del servidor de BD como FILESTREAM? Filetables? Tabled-Valued-Functions? Tabled-Valued-parameters?
    • Queréis un control detallado sobre los cambios del diseño de la base de datos?
    • Debe implementar arquitectura DDD? (orientada al dominio)

    Elegir entre ADO.NET o EF es básicamente elegir entre ir 'a pelo' a la BD, que es mucho más rápido en rendimiento bruto pero un infierno de código repetitivo (amén de que debes encargarte tu del control de cambios y de jerarquizar tus objetos), frente a usar un ORM que te saca el 90% del trabajo sucio, a costa de un menor rendimiento. 

    Y hablando de EF, elegir entre Database-First o Code-First en ocasiones es un tema de preferencias, o de conocimientos... pero en ocasiones hay factores que te pueden hacer inclinar la balanza porque sólo hay un modo de hacerlo (por ejemplo, el tercer punto sólo se puede hacer con Database-First).

    De todos modos, te aconsejaría utilizar Code-First, que te sirve para el 95% de los casos y te permite centrarte en el diseño de tus entidades de dominio, y a partir de ahí generar la base de datos.

    Nota: Porque no le das un vistazo a un mini-ORM como Dapper? Está a medio camino entre los dos. Es casi tan rápido como ADO.NET y te ahorra mucho trabajo. Dale un vistazo:

    https://code.google.com/p/dapper-dot-net/

    Saludos,


    No olvides marcar la respuesta como correcta si te ha sido de utilidad :-) Follow me on Twiiter: @lluisfranco Blog: lluisfranco.com



    miércoles, 12 de marzo de 2014 11:55
    Moderador
  • hola

    bueno quizas un parametro que tengas que tener en cuenta es que tanto tiempo tendras en el proyecto para aprender EF, si me dices que nada entonces ve por lo que conoces con codigo ado.net

    ahora si puedes dedicarle algo de tiempo a EF aconsejaria que sigas por ese camino, eso si no uses las herramientas grafias a menos que sea con VS2013, sino ve con Code First definiendo las clases y el mapping tu mismo

    en resumen si puedes dedicarle tiempo para sortear la curva de aprendizaje ve por EF

    saludos


    Leandro Tuttini

    Blog
    Buenos Aires
    Argentina


    miércoles, 12 de marzo de 2014 10:45

Todas las respuestas

  • hola

    bueno quizas un parametro que tengas que tener en cuenta es que tanto tiempo tendras en el proyecto para aprender EF, si me dices que nada entonces ve por lo que conoces con codigo ado.net

    ahora si puedes dedicarle algo de tiempo a EF aconsejaria que sigas por ese camino, eso si no uses las herramientas grafias a menos que sea con VS2013, sino ve con Code First definiendo las clases y el mapping tu mismo

    en resumen si puedes dedicarle tiempo para sortear la curva de aprendizaje ve por EF

    saludos


    Leandro Tuttini

    Blog
    Buenos Aires
    Argentina


    miércoles, 12 de marzo de 2014 10:45
  • Hola,

    Esa duda entre ADO-NET, Database-First o Code-First la hemos tenido unos cuantos entre los que me incluyo :)

    Estaría bien conocer más datos, para poder orientarte mejor.

    • Que tipo de aplicación es?
    • Que tecnología vais a usar para desarrollarla?
    • El rendimiento es un factor clave?
    • Vais a usar SQL SERVER?
    • En caso afirmativo, vais a utilizar características avanzadas del servidor de BD como FILESTREAM? Filetables? Tabled-Valued-Functions? Tabled-Valued-parameters?
    • Queréis un control detallado sobre los cambios del diseño de la base de datos?
    • Debe implementar arquitectura DDD? (orientada al dominio)

    Elegir entre ADO.NET o EF es básicamente elegir entre ir 'a pelo' a la BD, que es mucho más rápido en rendimiento bruto pero un infierno de código repetitivo (amén de que debes encargarte tu del control de cambios y de jerarquizar tus objetos), frente a usar un ORM que te saca el 90% del trabajo sucio, a costa de un menor rendimiento. 

    Y hablando de EF, elegir entre Database-First o Code-First en ocasiones es un tema de preferencias, o de conocimientos... pero en ocasiones hay factores que te pueden hacer inclinar la balanza porque sólo hay un modo de hacerlo (por ejemplo, el tercer punto sólo se puede hacer con Database-First).

    De todos modos, te aconsejaría utilizar Code-First, que te sirve para el 95% de los casos y te permite centrarte en el diseño de tus entidades de dominio, y a partir de ahí generar la base de datos.

    Nota: Porque no le das un vistazo a un mini-ORM como Dapper? Está a medio camino entre los dos. Es casi tan rápido como ADO.NET y te ahorra mucho trabajo. Dale un vistazo:

    https://code.google.com/p/dapper-dot-net/

    Saludos,


    No olvides marcar la respuesta como correcta si te ha sido de utilidad :-) Follow me on Twiiter: @lluisfranco Blog: lluisfranco.com



    miércoles, 12 de marzo de 2014 11:55
    Moderador
  • Hola Chente,

    Gracias por consultar en el foro, esperamos tus comentarios con respecto a la respuesta de Lluis. Esperamos tus comentarios al respecto.

    Saludos,

    Miguel

    MSDN/TechNet Soporte Comunidades

    Por favor, recuerde "Marcar como respuesta" las respuestas que hayan resuelto su problema.
    Es una forma común de reconocer a aquellos que han ayudado, y hace que sea más fácil para los otros visitantes encontrar la solución más tarde.

    Microsoft ofrece este servicio de forma gratuita, con la finalidad de ayudar a los usuarios y la ampliación de la base de datos de conocimientos relacionados con los productos y tecnologías de Microsoft. Este contenido es proporcionado "tal cual" y no implica ninguna responsabilidad de parte de Microsoft.

    viernes, 14 de marzo de 2014 0:02
    Moderador
  • Ante Todo Mil Disculpas he estado un poco alejado por otros proyectos.

    Bueno.

    El tema es que actualmente quiero migrar una APP vb6 a C# ya existe mi BD y claro que quiero usar las mejores practicas en cuanto a desarrollo.

    Cabe recalcar que de LinQ no se Nada de Nada 

    Pero la verdad es que me da mucha lata estar utilzando aplicacion graficas para modelar.

    En muchas aplicaciones e tomado como refeencia los ejemplos de "Leandro" me parece que se ha ido por el tema de codigo convencional y dandole uso a la potencia de la herramienta como lo es en los ejemplos CAPAS 

    Como les digo es una APP vb6 a C# y como sabran me he estrellado con problemas como el ReDim, el Ubound entre otros

    ReDim Preserve Data(UBound(Data) + 1) = en c# como seria?

    Strings.ChrW?

    vblLf

    Wow la verdad es qiue es una migracion dura estoy mas acostumbrandoa al vb 6

    Espero su ayuda

    • Editado ChenteDev domingo, 16 de marzo de 2014 16:08
    domingo, 16 de marzo de 2014 15:59
  • hola

    Como les digo es una APP vb6 a C# y como sabran me he estrellado con problemas como el ReDim, el Ubound entre otros

    pero no uses array par amentener listas usa una lista generica de esta forma el Redim o similar no se necesitas porque a la lista le puedes agregr nuevos item con el Add()

    Clase genérica List

    saludos


    Leandro Tuttini

    Blog
    Buenos Aires
    Argentina

    domingo, 16 de marzo de 2014 17:58
  • Lo que pasa es que uso una clase de sockets que encontre por ahi y asi esta.

    Private Sub DoRead(ByVal ar As IAsyncResult)
            Dim intCount As Integer
            Try
                intCount = _Client.EndReceive(ar)
                If intCount < 1 Then
                    Me.Close()
                    ReDim _byteBuffer(1024)
                    RaiseEvent Disconnected(Me)
                    Exit Sub
                End If
                AddToBuffer(_byteBuffer, intCount)
                'BuildString(_byteBuffer, 0, intCount)
                Array.Clear(_byteBuffer, 0, intCount)
                _Client.BeginReceive(_byteBuffer, 0, 1024, SocketFlags.None, AddressOf DoRead, Nothing)
            Catch ex As Exception
                Me.Close()
                ReDim _byteBuffer(1024)
                RaiseEvent Disconnected(Me)
            End Try
        End Sub

    domingo, 16 de marzo de 2014 18:23
  • hola

    estas seguro que esa funcionalidad esta correcta, porque lo veo algo rara

    porque sino recibe nada en el EndReceive redimensiona a 1024 ? no parece tener mucho sentido redimensionar algo que no va a asignar con ningun contenido

    saludos


    Leandro Tuttini

    Blog
    Buenos Aires
    Argentina

    domingo, 16 de marzo de 2014 19:21
  • Como te digo leandro es una clase que tome de la web para manejar el tema de mi capa de infraestructura(Sockets)
    lunes, 17 de marzo de 2014 0:57
  • Hola de nuevo,

    Aunque no sepas de LINQ, ya verás que es muy sencillo. Y es algo implícito en el lenguaje, no sólo en lo relacionado con BD.

    Yo no iría directamente usando ADO.NET, para eso usa un mini-orm como Dapper, que te ofrece el mismo rendimiento y te ahorra mucho trabajo. Y sobre todo: EN NINGÚN CASO SE TE OCURRA USAR DATASETS. Hace años que están muertos y enterrados.

    En cuanto a tus dudas:

    Lo del Redim Preserve es algo antediluviano, en su lugar usa Listas genéricas: List<Cliente>

    Y sobre el resto mira:

    http://stackoverflow.com/questions/6060576/what-is-the-c-sharp-equivalent-of-chrwe-keycode

    Y Environment.NewLine

    Saludos y no te preocupes, para cualquier cosa pregunta.


    No olvides marcar la respuesta como correcta si te ha sido de utilidad :-) Follow me on Twiiter: @lluisfranco Blog: lluisfranco.com


    lunes, 17 de marzo de 2014 7:46
    Moderador
  • Pero para que estás usando este código?

    Dinos lo que quieres hacer, que seguro encontramos otra forma mejor de hacerlo :)


    No olvides marcar la respuesta como correcta si te ha sido de utilidad :-) Follow me on Twiiter: @lluisfranco Blog: lluisfranco.com

    lunes, 17 de marzo de 2014 7:48
    Moderador
  • Pues lo que intento hacer es tener una clase para manejar conexion con sockets

    esto quiero ponerlo en una capa IL o Infraestructure Layer

    viernes, 21 de marzo de 2014 3:05
  • Hola,

    Porque usas Sockets y no por ejemplo SignalR?

    Que tipo de información quieres mandar/recibir?

    Saludos,


    No olvides marcar la respuesta como correcta si te ha sido de utilidad :-) Follow me on Twiiter: @lluisfranco Blog: lluisfranco.com

    viernes, 21 de marzo de 2014 7:33
    Moderador
  • Pues strings heartbeats cosas asi
    "<MSG_TYPE_DIAL><Number>" & strTelefono & "</Number><IDnumber>" & IDCall & "</IDnumber></MSG_TYPE_DIAL>~"
    • Editado ChenteDev viernes, 21 de marzo de 2014 16:00
    viernes, 21 de marzo de 2014 15:57