miércoles, 5 de noviembre de 2014

[Entity Framework] Code First - Cargando Entidades Relacionadas

 

Las asociaciones pueden trabajarse por lazy load o definir explícitamente que cargue una propiedad relacionada, esos temas serán tratados en el video, así como se comportan las entidades cuando están fuera del contexto.

También veremos como analizar las queries que EF genera, utilizando Sql Server Profiler.

 

 

Link


image

59 comentarios:

  1. Hola Leandro, lo molesto para consultarle lo siguiente:

    debo guardar, a través de un botón, lo seleccionado en cada fila (con Select)de tres GridViews diferentes en el mismo WebForm..........no encuentro referencia a esto en ninguna búsqueda, quisiera saber si Ud. esta al tanto, o tiene algún indicio de como se podria resolver esto.

    Desde ya quedo muy agradecido por su aporte, mi mail es guille_ferrero33@hotmail.com, o consulto su blog.......

    Saludos, hasta luego..

    ResponderEliminar
  2. hola Guillermo

    Estos grid tienen una columnas con un checkbox en cada row?, no aconsejo un radiobutton porque hay algunos problemas con este y el grid, si solo necesitas una unica seleccion solo lo validas
    Con esto podrias en el click del boton tomar la seleccion de cada grid para insertarla

    Imagino sobre ado.net para crear el INSERT conoces como hacerlo

    saludos

    ResponderEliminar
    Respuestas
    1. Buenos dias Señor Tuttini soy un aficionado que se apasiona por la programacion la verdad es que me gusta ver codigos y entender como son sus sintaxis y de ahi comenzar a formarme metodos o procedimientos a seguir para realiar diversas actividades o funciones en un codigo fuente mi nombre es Danilo Oswaldo Berroteran Vivas soy de Nicaragua y quisiera hacerle una consulta con respecto a visual net 2015 quisiera saber si se puede o existe alguna manera de mostrar mediante el evento clic de un boton que este muestre en un mensaje que tipo de framework es decir la version con la que se compilo un proyecto en windows forms de visual net. por ejemplo cree una aplicacion y esta la configure en las propiedades del proyecto que trabajara con framework 2.0 me gustaria que al dar clic me muestre un mensaje que diga app realizada en framework 2.0 y que si cambio la propiedad del proyecto y lo vuelvo a compilar me muestre la version que halla establecido en dicho cambio. se puede ???

      Eliminar
  3. Hola Leandro, no tienen ni checkBox ni Radio, solo Boton Select..............No se como tomar las filas seleccionadas de Tres GridsViews independientes, pero en el mismo Webform y, a través de botón aceptar, guardarlas en una tabla......Por allí tenes un código o modelo, o una idea, etc................te agradezco por responderme........te envio un abrazo grande y espero tu devolución..........Disculpa las molestias, gracias...........8asp.net c#)...........

    ResponderEliminar
  4. hola Guillermo

    La fila seleccionada solo puedes reconocerla cuando se lanza el evento SelectedIndexChanged o RowCommand, despues de eso ya no hay seleccion

    Si tienes 3 grid diferentes deberias poner alguna marca de cual es la row activa, por eso mencione el checkbox.
    Con el boton solo lanzas un evento y realizas una accion, dentro de este si puede determinar cual es la row que lanza el evento, pero solo alli

    saludos

    ResponderEliminar
  5. Esta bien, entonces habría que ponerle CheckBox, y una vez asi, luego recorro el Grid para que me levante solo la fila seleccionada........Ahora: cada fila tiene 3 datos en tres campos, uno de ellos, el 1°, es un Id de algo............Como haría para guardar solo ese Id en la tabla, y no el resto de los datos de cada fila tambien??....




    Tendría que saber eso, Gracias por tu aclaración primera, espero tu devolución, nos vemos




    disculpa que te moleste.......

    ResponderEliminar
  6. hola Guillermo

    si tienes la row marcada del grid podrias acceder al valor de la celda

    string id = row.Cells[1].Text;

    es mas no necesitas que el id este en una columna ya que podrias haber definido el campo id en el DataKeyNames y tomar el valor con el DataKeys

    saludos

    ResponderEliminar
  7. Mil millones de gracias Leo, espero no molestarte mas, abrazos, no estamos viendo,....

    ResponderEliminar
  8. Hola Leandro,

    lamento escribir esto por aquí pero no encontré un tema adecuado para realizarlo.

    Mi caso es que el archivo web.config tiene habilitado el impersonate = true y cuando corro la aplicación me manda el siguiente error:

    Se ha detectado una configuración de ASP.NET que no se aplica en el modo integrado de canalización administrada.


    Cuando cambio impersonate = false, me redirecciona a la página de inserción de credenciales, ingreso credenciales correctas pero no me las admite.

    Qué debo hacer?

    Desde ya, gracias!

    Aaron Ruiz

    ResponderEliminar
  9. hola Aaron

    esto sucede cuando estas ejecutando desde el VS o cuando pones el sitio en el IIS ?

    lo pregunto porque si es desde el IIS puede que hayas configurado la integracion con windows

    imagen

    saludos

    ResponderEliminar
  10. Hola Leandro,

    esto sucede cuando ejecuto la aplicación desde VS. Es una aplicación hecha en VS2003 y al momento de migrarla a VS2013 marcaba varios errores, corregí los errores pero no me acepta las credenciales ingresadas.

    Reitero, la aplicación se desmontó de IIS y ahora es ejecutada localmente desde VS. Tienes alguna otra idea?

    Saludos

    ResponderEliminar
  11. Leandro, como le va??....Disculpe que lo moleste nuevamente; siguiendo con lo de 3 Grids Views y CheckBox, hice el sig. código, pero me da el Error que estará mas abajo de él, a ver:


    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Web;
    using System.Web.UI;
    using System.Web.UI.WebControls;
    using System.Data.OleDb;
    using Datos;
    using Negocio;

    protected void ButtonAceptar_Click(object sender, EventArgs e)
    {
    foreach (GridViewRow row in GridMateria.Rows)
    {
    CheckBox1 check1 = row.FindControl("CheckBox1") as CheckBox;

    //if(check1.Checked)
    //{
    //string idMateria = row.Cells[1].Text;

    }
    foreach (GridViewRow row in GridCurso.Rows)
    {
    CheckBox2 check2 = row.FindControl("CheckBox2") as CheckBox;

    //if(check2.Checked)
    //{
    //string idCurso = row.Cells[1].Text;

    }
    foreach (GridViewRow row in GridProfesor.Rows)
    {
    CheckBox3 check3 = row.FindControl("CheckBox3") as CheckBox;

    //if(check3.Checked)
    //{
    //string idProfesor = row.Cells[1].Text;

    }
    try
    {
    OleDbConnection cnn = new OleDbConnection();
    cnn.Open();
    string sqlStatement = string.Empty;
    sqlStatement = @"INSERT INTO CursosMaterias (id_Materia, id_Curso, Id_persona)
    VALUES (@idMateria, @idCurso, @idProfesor);
    SELECT SCOPE_IDENTITY()";
    OleDbCommand cmd = new OleDbCommand(sqlStatement, cnn);
    cmd.Parameters.AddWithValue("@idMateria", Convert.ToInt32(GridMateria.Cells[0].Text));
    cmd.Parameters.AddWithValue("@idCurso", Convert.ToString(GridCurso.Cells[0].Text));
    cmd.Parameters.AddWithValue("@idProfesor", Convert.ToString(GridProfesor.Cells[0].Text));
    }

    Error:

    Compiler Error Message: CS0246: The type or namespace name 'CheckBox1' could not be found (are you missing a using directive or an assembly reference?)



    El Error:(La línea 32)


    Line 30: foreach (GridViewRow row in GridMateria.Rows)
    Line 31: {
    --Line 32: CheckBox1 --check1 = row.FindControl("CheckBox1") as CheckBox;
    Line 33:
    Line 34: //if(check1.Checked)

    Le envio un saludo grande, cualquier cosa, le respondo, gracias....

    ResponderEliminar
  12. Por allí, Ud. puede descifrar algo que yo no..........Gracias...

    ResponderEliminar
  13. Hola, Leandro, después me puede responder este hilo....Disculpe que lo moleste........Saludos....

    ResponderEliminar
  14. hola Aaron

    en el web.config que tipo de seguridad tienes definida? es por Forms o Windows la seguridad que aplica el sitio

    entiendo que usas el "VS Developer Server" para ejecutar lo cual no requiere del iis

    saludos

    ResponderEliminar
  15. hola Guillermo

    es que no puedes definir

    CheckBox1 check1 = row.FindControl("CheckBox1") as CheckBox;

    sino que deberias usar solo CheckBox

    CheckBox check1 = row.FindControl("CheckBox1") as CheckBox;

    saludos

    ResponderEliminar
  16. Gracias Leandro, solo me falta, en
    cmd.Parameters.AddWithValue("@idMateria", .........)

    captar las variables donde he guardado: Ej: row.Cells[1].Text;

    pero, no me reconoce la instancia row

    Abrazo..

    ResponderEliminar
  17. hola Guillermo

    pero row sale de aqui

    foreach (GridViewRow row in GridProfesor.Rows)

    estas ubicando ese codigo dentro del foreach

    saludos

    ResponderEliminar
  18. Hola Leandro,

    en el web.config tengo dos configuraciones, las cuales, en una tengo tres allow users = ?, uno para cada página definiendola en location path="paginauno.aspx", página dos y página tres respectivamente.

    Por otro lado, en la otra configuración dentro del mismo web.config tengo la autenticación por Forms, mandando la form a un login="login.aspx" con su nombre de cookie, timeout y path, con una autorización para negar usuarios anónimos pero permitir a todos los usuarios, esto lo aclara un poco más:

    deny users="?"
    allow users="*"
    (este segundo es para permitir a los usuarios registrados solamente)

    También tengo un identity impersonate, pero este cabe aclarar que lo tuve que cambiar a false, porque si encuentra en true no me permite ver ninguna página.

    Cabe destacar que comento esta configuración dentro del web.config pero aún así no me acepta las credenciales.

    Alguna otra idea?

    Saludos!

    ResponderEliminar
  19. hola buenas noches disculpe la molestia..
    soy nuevo en lo de servicios web estoy trabajando con visual basic necesito consumir el servicio de validación de facturas que ofrece el SAT agrego la Url del servicio al proyecto de hay tengo que combertir el archivo XML a tipo cadena para poder mandarla y recibir una respuesta..
    espero me pueda ayudar
    gracias..

    ResponderEliminar
  20. hola luis

    la verdad no entendi, si el web reference al servicio pudiste realizarlo solo queda consumir sus metodos

    las conversiones la verdad no comprendo a que te refieres, imagino seria una adaptacion de los datos, pero si es asi solo queda codificar esa conversion usando linq to xml o XmlDocument

    saludos

    ResponderEliminar
  21. hola buenos dias Leandro
    disculpa por la redacción del texto

    solo necesito consumir los metodos del web services esto es lo que ago pero me marca erro

    'paso mi xml a string
    Dim xmlDoc As New XmlComment()
    xmlDoc.Load("C:\Users\luis alberto\Documents\Visual Studio 2010\facturas\XmlDocument.Xml")
    Dim xmlasString As [String] = xmlDoc.OuterXml

    'ago la instancia del ws
    Dim client As facturas.ConsultaCFDIService = New facturas.ConsultaCFDIService()
    Dim Respuesta As Acuse = client.Consulta(xmlasString)
    Dim xmlAceptado As String
    XMLAceptado = Respuesta

    espero y me entienda gracias
    saludos...

    ResponderEliminar
  22. Hola, Leandro:
    En tus ejemplos de uso de DataKeyName,

    PersonId........es un campo de una Tabla de Datos de una Base de Datos??.......de ser asi, con solo tomar el DataKeyName PersonId(ejemplo), puedo tomar solo el Id de una Tabla mia de Datos de mi Base de Datos, como quiero, de toda una fila solo ese ID, y no el resto de los datos de la Fila, los cuales solo están para que el que interactue con la Grilla, le sirva de referencia esos datos que no necesito tomar para cargar en Base de Datos......Confirmame eso, y Abrazos....

    ResponderEliminar
  23. Es decir: el DataKeyName PersonId........es un Campo Id de una Tabla de Datos de Base de Datos???


    Gracias, disculpa que te moleste...

    ResponderEliminar
  24. hola Guillermo

    Exacto en el DataKeyNames defines el nombre del campo de tu origen de datos, en tu caso el nombre de un campo de la tabla.

    Esta propiedad sirve para poder trabjar con informaicon que no se quiere mostrar al usuario, como por ejemplo el id de la entidad.

    Pero recuerda que puedes definir uno o mas de uno separado por comas, en ese mismo articulo comento como podrias tomar mas de un valor con el DataKeys

    saludos

    ResponderEliminar
  25. Gracias Leandro, el tema ahora es meter los Campos Id de los DataKeyName de los tres diferentes GridsViews de donde los tomo (IdCurso, IdMateria, IdProfesor), en la Tabla CursosMaterias, que me los pide...

    No se si en el

    Parameters.AddWithValue = @());

    Mil Millones de gracias por responderme lo anterior y esto, abrazo....

    ResponderEliminar
  26. Hola Lenadro como estas? ante todo gracias por todo.
    tenes una entrada acerca de manejod e session y timeout en mvc ? gracias

    ResponderEliminar
  27. hola Ariel

    pero el objeto session se utiliza de la misma forma que se lo hacia en asp.net clasico, no hay diferencia en la utilizacion de este objeto

    cual es el problema que tienes con el timeout?

    saludos

    ResponderEliminar
  28. Nunca me saca , sigo llamando a los controlers y nada. nos e si va codigo en algun lado..

    lo que uso es:

    if (_IUsuarioControler.ValidateUser(model.Nombre, model.Pwd))
    {
    FormsAuthentication.SetAuthCookie(model.Nombre,true);

    return RedirectToAction("Index", "Home");
    }
    Y
    public ActionResult Logout()
    {
    FormsAuthentication.SignOut();
    return RedirectToAction("Index", "Home");
    }

    no massss

    ResponderEliminar
  29. hola Ariel

    que seria exactamente el "y nada" ?

    se produce algun mensaje de error o simplemente la validacion retorna false

    ese codigo que muestras lo ubicas en un action en algun controller?
    si es asi de que tipo es _IUsuarioControler? porque parece ser una interfaz, imagino que inyectas alguna instancia de un servicio, si es asi podrias poner algun breakpoint y ver como responde la query

    saludos

    ResponderEliminar
  30. Hola Leonardo.

    No conozco tu correo y te comento por aquí.

    En mi próximo tutorial del puerto serie y Arduino controlando relés. Te pongo como colaborador en la parte de programación que tanto me has ayudado. Hay más gente.

    Ya lo presentaré cuando acabe.

    Saludos.

    ResponderEliminar
  31. Como le va Leandro, en el Foro de c#, le hago una consulta con el tema:

    No se puede agregar o cambiar el registro porque se necesita un registro relacionado en la tabla 'Alumno'.

    Disculpe que lo moleste, estare siempre agradecido, nos vemos....

    ResponderEliminar
  32. Leandro buenas tardes

    tengo una consulta

    tengo una clase perfil cuando la creo le agregro los menues que va a poder acceder ( los menues existen)

    cuando la salvo me crea de nuevo los menues y crea la relación ( perfilmenu) con los menu nuevos creados.

    hay forma de indicarle a EF q el objeto q le agregue a la colección ya existe q no lo creee??


    public PerfilMap()
    {
    ToTable("tPerfil");
    HasKey(c => c.IdPerfil);
    Property(c => c.IdPerfil).HasDatabaseGeneratedOption(DatabaseGeneratedOption.Identity);
    Property(t => t.Descripcion).HasColumnName("txDescripcion");
    Property(t => t.Activo).HasColumnName("flActivo");
    HasMany(Perfil => Perfil.MenuItems)
    .WithMany(MenuItem => MenuItem.Perfiles)
    .Map(mc =>
    {
    mc.ToTable("tMenuItemPorPerfil");
    mc.MapLeftKey("IdPerfil");
    mc.MapRightKey("idMenuItem");
    });
    }

    ResponderEliminar
    Respuestas
    1. hola
      Es que sino quieres que vuelva a crear la entidad debes marcarle el estado
      Add/Attach and Entity States
      veras que ali usa el
      context.Entry(entidad).State = EntityState.Unchanged;
      saludos

      Eliminar
  33. Buen día, esto no tiene que ver mucho con lo que explicas aqui, pero bueno, estoy haciendo ejemplos con MVC4 y Entity Framework, creo classLibrary y model con la BD de SQLServer usando el asistente todo bien luego creo el proyecto de mvc básico. agrego la referencia de classLibrary y la conexión que se creo en esta misma en el webConfig, ahora creo el controlador con x tabla se crea bien la mando llamar en el RouteConfig, y aparece el Index en este caso la tabla con los datos que tiene cuando le doy agregar nuevo todo bien lo agrega pero si le doy click en editer, detalles, eliminar me aparece este error:

    Error HTTP 404.0 - Not Found Se ha quitado el recurso que está buscando, se le ha cambiado el nombre o no está disponible en estos momentos.
    Información de error detallada:
    Módulo ManagedPipelineHandler
    Notificación ExecuteRequestHandler
    Controlador System.Web.Mvc.MvcHandler
    Código de error 0x00000000

    Agradecería tu respuesta

    Imagen:
    https://goo.gl/HBUL55

    ResponderEliminar
    Respuestas
    1. No envía el id en la url Error: http://localhost:8061/Municipios/Details

      Correcto: http://localhost:8061/Municipios/Details/4

      que me falta configurar??

      Eliminar
    2. YA vi cual era mi horror del error,esto pasa cuando dejas de programar un año. Saludos

      Eliminar
  34. Leandro buen dia como estas? te consulto algo quizas tenes algun articulo para mirar.. tengo un div dodne se cargan los menues en el la view _Layout.cshtml en $(document).ready.
    lo q sucede es q se ejecutan la carga de menues cada vez q se carga una pagina y quiero q solos e haga una vez ya q es desde la DB.

    alguna idea? gracias totales

    ResponderEliminar
    Respuestas
    1. hola
      Habria que analizar sino se puede implementar algun cache para el menu, aunque imagino que este no es el mismo para todos los usuario, sino que cambia dependiendo del perfil de la persona que ingresa
      Understanding Caching in Asp.Net MVC with example
      de esta forma quizas el action que retorna los datos para armar el menu podrias aplicar el cache y asi no tener que acceder a la db constantemente
      saludos

      Eliminar
  35. Comparto la solucion

    @if (Session["MyMenu"] == null)
    {
    Session["MyMenu"] = @Html.Action("MenuLayout", "Home");
    }
    @Session["MyMenu"]

    ResponderEliminar
    Respuestas
    1. hola
      Definir html en la session no creo que sea buena idea
      Sigo pensando que podrias haber aplicado el cache sobre el action
      saludos

      Eliminar
    2. Este comentario ha sido eliminado por el autor.

      Eliminar
  36. Buenos dias Señor Tuttini soy un aficionado que se apasiona por la programacion la verdad es que me gusta ver codigos y entender como son sus sintaxis y de ahi comenzar a formarme metodos o procedimientos a seguir para realiar diversas actividades o funciones en un codigo fuente mi nombre es Danilo Oswaldo Berroteran Vivas soy de Nicaragua y quisiera hacerle una consulta con respecto a visual net 2015 quisiera saber si se puede o existe alguna manera de mostrar mediante el evento clic de un boton que este muestre en un mensaje que tipo de framework es decir la version con la que se compilo un proyecto en windows forms de visual net. por ejemplo cree una aplicacion y esta la configure en las propiedades del proyecto que trabajara con framework 2.0 me gustaria que al dar clic me muestre un mensaje que diga app realizada en framework 2.0 y que si cambio la propiedad del proyecto y lo vuelvo a compilar me muestre la version que halla establecido en dicho cambio. se puede ???

    ResponderEliminar
  37. Ayuda!! Estoy manejando membership provider y en la aplicacion local si permite bloquear el acceso de usuarios a ciertas carpetas pero en el servidor no respeta esas reglas me podrias ayudar a resolver te lo agradeceria mucho gracias!!!

    ResponderEliminar
    Respuestas
    1. hola
      como defines el tag location ?
      Indicar elementos públicos o privados en un mismo sitio de ASP.NET
      Deberias revisar como asignas la seguridad a estas carpetas.
      En el servidor cuando ingresas te solicita autenticacion o quizas lo configuraron para que se integre con windows por eso pasa directo con el usuario del propio dominio de la red
      saludos

      Eliminar
  38. Hola Leandro y a todosss. tengo un error y luego de una semana me decidi a pedir ayuda
    estoy cargando una partial y no se aloja en el div sino q me lo abre un una pantalla nueva.
    este es el index y lo carga bien
    **************************************
    @{
    Layout = "~/Views/Shared/_Layout.cshtml";
    }



    $(document).ready(function () {
    var CargarMenu = function cargarMenu()
    {
    $("#div_menu_lateral").load('@(Url.Action("MenuLateral", "Producto", null, Request.Url.Scheme))');
    }
    CargarMenu();
    });

    **********************************

    una vez q un menu me lleva a otra vista en la misma se ejecuta lo siguiente pero se carga en toda la pagina




    $(document).ready(function () {

    var IdOrden = $('select[name=Rubros]').val();
    var IdRubro = $('#IdRubro').val();
    var IdCategoria = $('#IdCategoria').val();
    var IdMarca = $('#IdMarca').val();
    var IdProvincia = $('#IdProvincia').val();
    var IdLocalidad = $('#IdLocalidad').val();

    var CargarMenu = function cargarMenu() {

    alert("cargarMenu Index Producto");
    $("#div_menu_lateral").load('@(Url.Action("GetPartialMenu", "Producto", null))?p_IdRubro=' + _IdRubro + 'IdCategoria= ' + IdCategoria + 'IdMarca= ' + IdMarca + 'IdProvincia= ' + IdProvincia + 'IdMarca= ' + IdMarca + 'IdOrden=' + IdOrden);
    }

    CargarMenu();

    ....
    Help

    ResponderEliminar
  39. Hola, la verdad es que hace mucho que necesitaba preguntarte sobre como puedo hacer para manejar una asociacion y composocion con reflection en c#. Te agradezco desde ya tu respuesta va a ser de gran valor para mi ya que llevo tiempo intentando concretar eso y nada.

    ResponderEliminar
  40. me interesa el manejo de reflection porque con herencia funciona muy bien ahora cuando hay relaciones entre clases se complica para hacer un insert u obtener datos de sqlserver. Gracias

    ResponderEliminar
  41. te paso el metodo que utilizo para obtener las propiedades de un objeto, en el cual tiene como atributo otro objeto y quiero generar una query para utilizarla con sql. tanto para insertar como para obtener datos del motor.
    public override int Insertar(Object o)
    { string sql = "";
    string spa = "";
    string p = "(";
    string v = "(";
    int resp = 0;
    try
    {
    foreach (PropertyInfo propiedad in o.GetType().GetProperties()) {

    if (propiedad.Name != "ID")
    {
    spa = VerificaTipoDato(propiedad.PropertyType.ToString());
    p = p + propiedad.Name + ",";
    v = v + spa + propiedad.GetValue(o, null) + spa + ",";
    }
    }
    p = RightQUERY(p, p.Length);
    v = RightQUERY(v,v.Length);
    sql = "insert into " + o.GetType().Name + p + " Values " + v;
    /*---------Ejecucion de otro metodo-------*/
    resp = this.EjecutarQuery(sql);
    }
    catch (SqlException ex)
    {
    throw new Exception("Error al intentar insertar..." + ex.Errors.ToString());
    //throw (ex);
    }
    return resp;
    }
    Espero se entienda el problema, porque en el for each obtengo las propiedades, pero cuando una de ellas es otra clase que tiene como atributo ejemplo (clase persona que tiene otra clase domicilio), entonces no puedo obtener los atributos de domicilio. Ojalá se pueda hacer

    ResponderEliminar
    Respuestas
    1. hola
      La verdad veo bastante complejo lo que planteas, generar todo el descubrimiento dinamico de las entidades.

      Lo que alli veo es que defines un INSERT INTO, o sea entity framework donde aplicaria? Deberias en la entidad Persona ademas de asignar la propiedad como Domicilio tambien definir la propiedad DomicilioId entonces al menos tienes el campo que permite la relacion.

      Otra forma seria definiendo un atributo creado custom, entonces defines encima de la propiedad Domicilio ese atributo con el nombre de la propiedad donde insertar el id que las relaciona
      Tutorial de atributos
      entonces por reflection si detectas que la propiedad tiene este atributo tomas de alli el nombre del campo

      saludos

      Eliminar
    2. Melisa hice una app que usaba reflection , si queres lo vemos directamente y luego ponemos al respuesta acá. te parece? arielganc@gmail.com

      Eliminar
  42. hola, antes que nada gracias por responder!!!, la verdad es que nunca use entity framework, pero si entendi lo que me planteas con respecto del DomicilioId. Sigo sin entender como hacer para obtener mediante reflection el nombre de las propiedades y los valores de las mismas de ambos objetos relacionados. este metodo por ahi ayuda a reflejar mi pedido por saber si es posible o no
    protected string ObtenerPropiedadesObjeto(object o)
    {
    string nombreAtributo = "";
    string valorAtributo = "";
    try
    {
    foreach (PropertyInfo propiedad in o.GetType().GetProperties()) {
    p = p + propiedad.Name + ",";
    v = v + spa + propiedad.GetValue(o, null) + ",";
    }
    }
    }
    catch (ApplicationException exc)
    {
    throw (exc);
    }

    }

    ResponderEliminar
  43. Este comentario ha sido eliminado por el autor.

    ResponderEliminar
  44. Este comentario ha sido eliminado por el autor.

    ResponderEliminar
  45. Este comentario ha sido eliminado por el autor.

    ResponderEliminar
  46. Hola, Leandro, disculpe que lo moleste, estoy consultando en foro c#, en las trabas de mi Proyecto ultimamente dado que rindo en Diciembre, y temo quedarme sin timepo, debo terminar cuanto antes para hacer revisiones, etc.....Le pido disculpas que me vea seguido por alli, por ello solicito ayuda para resolver.....y tambien quiero preguntar si hay limite de posteos por dia en le foro...... Disculpe las molestias, gracias....

    ResponderEliminar
  47. Tomar TXT
    Hola buenas tardes, soy nuevo en C#.
    Me pueden apoyar con un programa?
    tiene que tomar archivos .txt de una carpeta y crear a cada uno otro tipo de extensión ejemplo .ast


    Me puede apoyar por favor???


    ResponderEliminar
    Respuestas
    1. hola
      Podrias usar el File.Copy() entonces copias el archivo pero cambias el nombre del destino con la nueva extension

      saludos

      Eliminar
  48. Es muy facil hacer eso en net. Haceme acordar mañana y te pongo ejemplos

    ResponderEliminar