sábado, 1 de noviembre de 2014

[Entity Framework] Code First - Convenciones

 

Les comparto este video donde explico las convenciones que Entity Framework utiliza para descubrir los tipos de datos, la clave principal, las relaciones entre entidades, etc.

Podemos definir nuestro modelo sin necesidad de escribir explícitamente en código como mapea con la base de datos, solo será necesario seguir ciertas normas preestablecidas en las convenciones.

 

 

 

Link


image

28 comentarios:

  1. Hola leandro, Excelente video, los seguire todos hasta manipular Entity Framework. Gracias por compartir tu conocimiento!!!.

    ResponderEliminar
  2. Hola, Leandro, le recuerdo algo que le deje en c#, Titulado: Error de Compilacion (No me toma SelectedItem de DropDownList).....saludos.....

    ResponderEliminar
  3. hola Guillermo

    en que lugar planteaste este tema que mencionas?

    porque no recuerdo haberlo visto

    saludos

    ResponderEliminar
  4. Hola, Leandro, en foro c#, el jueves 5/3...........Abrazo, saludos

    ResponderEliminar
  5. hola Guillermo

    la verdad no localice cual es la pregunta dentro del foro

    seria recomendable poner el link, asi se va directo

    saludos

    ResponderEliminar
  6. Gracias, Leandro, aquí va:

    https://social.msdn.microsoft.com/Forums/es-ES/35070201-064c-4769-bd86-42d9a41f84e2/error-de-compilacion-no-me-toma-selecteditem-de-dropdownlist?forum=netfxwebes#5b3c7c2d-4da9-4267-bd8e-7dddce368af5

    ResponderEliminar
  7. Hola, Leandro, le puedo consultar lo siguiente?

    Existe alguna forma de llenar una sola Columna de un Grid View con el mismo dato de un TextBox (el TextBox es un TextCalendar que recoge la Fecha de un Objeto Calendar), despues de unBoton??.....
    (si hay que llenar tabla, como, etc.....

    Disculpe que lo moleste, tambien le recuerdo que le deje una consulta del Update de Id_Rol del TextId_Rol que me agrega nuevo Id_Rol en la Tabla cuando Modifico....(esta en el fondo del Blog, donde hay 10 comentarios)......

    Gracias, Leandro, un abrazo...Disculpe...Espero no molestarlo mas.....

    ResponderEliminar
    Respuestas
    1. hola

      no se si entendi del todo el planteo del problema pero el textbox es un dato simple y el grid mostraria una lista o coleccion
      podrias crear en memoria un DataTable con una columna a la cual le asignas el valor del TextBox para mostra el dato

      DataTable dt = new DataTable();
      dt.Columns.Add("col1");

      DataRow row = dt.NewRow();
      row["col1"] = TextBox1.Text;
      dt.Rows.Add(row);

      GridView1.DataSource = dt;


      saludos

      Eliminar
  8. Corrijo, lo del Id_Rol, cuando Modifico, esta en le link siguiente, de 11 comentarios........abrazos, saludos

    ResponderEliminar
  9. Mil millones de gracias, Leo, estoy ya probando tu solucion ultima de este post, quedaria la duda de si hago el DataBind(); del Grid.........Y no logro que en el Modifcar, no me agregue un nuevo Id_Rol a la Tabla Rol del textIdRol.Text.......Habra otra forma de Boton Modificar??, abrazos, buen finde, espero tu devolucion....

    ResponderEliminar
  10. Hola, Leandro, se puede llenar un DropDownList con Id seleccionado de un Grid<View en otra pagina??, estoy mudando de control con respecto al Id de TextBox para el ABM.......El tema es: selecciono una fila (boton Select del GridView), y su Celda Id se me debiera cargar en un DropDownList en otro Webform.....se podra??.......Gracias, espero tu devolucion, disculpa, abrazo, nos vemos...

    ResponderEliminar
    Respuestas
    1. hola
      Deberias poder hacerlo, pero entiendo que hay una comunicacion entre dos webforms por lo que el dato que pasas de uno a otro deberias ponerlo en una lista en Session
      Entonces podrias tomar los datos de la session para cargar el combo
      saludos

      Eliminar
  11. No se si hay que usar QueryString, como quedaria???, abrazo....

    ResponderEliminar
  12. Hola, Leandro, le consulto por lo siguiente:

    Debo llenar una Grilla con lo obtenido de otras 2 Grillas, pero me da el sig. Error:

    "Error de sintaxis (falta operador) en la expresión de consulta 'amc.id_alumMatCurso = N.id_alumMatCurso INNER JOIN (CursosMaterias CM On amc.id_cursoMateria = CM.id_cursoMateria'."

    Le comparto el Codigo que estoy usando:

    using (OleDbConnection cnn = new OleDbConnection(cadenaConexion))
    {
    cnn.Open();

    string query = @"SELECT N.Id_Nota, N.Nota, N.[Fecha Trimestre], N.Tipo, N.Etapa, N.Dni, N.Nombre, N.Apellido, N.id_alumMatCurso
    FROM Notas N INNER JOIN AlumMatCursos amc ON amc.id_alumMatCurso = N.id_alumMatCurso INNER JOIN (CursosMaterias CM On amc.id_cursoMateria = CM.id_cursoMateria)
    WHERE CM.id_Curso = @idCurso AND CM.id_Materia = @idMateria))";
    OleDbCommand com = new OleDbCommand(query, cnn);

    com.Parameters.AddWithValue("@idCurso", Convert.ToInt32(ViewState["idCurso"]));
    com.Parameters.AddWithValue("@idMateria", Convert.ToInt32(ViewState["idMateria"]));
    //com.Parameters.AddWithValue("@idcurMater", Convert.ToInt32(ViewState["idMateria"]));

    com.ExecuteScalar();
    OleDbDataAdapter da = new OleDbDataAdapter(com);
    DataTable dt = new DataTable();
    da.Fill(dt);


    No entiendo que ese ese Error, y donde estaria la falla......Disculpe, les pediria si Ud. sabe, me lo hiciera conocer, mil gracias, nos vemos...

    ResponderEliminar
    Respuestas
    1. hola
      Lo que recomendaria es que quites los parentesis porque no son necesarios
      Si analizas la query veras que al final estas definiendo parentesis de mas
      saludos

      Eliminar
  13. Ya lo logre, mil millones de gracias, faltaba GridView.DataSource = dt;
    GridView.DataBind();

    ResponderEliminar
  14. Ya lo logre, mil millones de gracias, faltaba GridView.DataSource = dt;
    GridView.DataBind();

    ResponderEliminar
  15. Hola, Leandro, le deje, siguiendo el hilo de "Imput string was not in correct format", en el Foro de c#, algunos datos mas para que me ayude a encontrar el error motivo de mi consulta.....disculpe que lo moleste, gracias...

    ResponderEliminar
  16. Hola, Leo, disculpe que lo moleste, me comunico para informarle, si Ud. puede, le dejo una consulta en el Foro de c# intitulada: "contabilizar y porcentuar Presentes, Ausentes y llegadas tarde"

    Consulto con una sugerencia mia, si seria adecuada, y tambien si hay otra forma, cual seria, nada mas, saludos, gracias, y disculpa las molestias

    ResponderEliminar
  17. Hola, Leo, como le va??, le comento que le deje una respuesta en la consulta "se corre GridView asp.net c#" en el Foro de C#, gracias, saludos....

    ResponderEliminar
  18. Hola, Leandro, lo puedo molestar???

    quisiera consultarle lo siguiente, si es que Ud. puede:

    quiero llenar columna de GridView con un TextCalendar, luego de haber seleccionado la fecha desde un objeto Calendar....

    Y tengo un codigo asi:

    codigo de boton en Capa Presentacion:

    protected void ButtonCargar_Click(object sender, EventArgs e)
    {
    DateTime fecha;
    if (DateTime.TryParse(TextCalendar.Text, out fecha))
    {
    AccesoLogicaMateriaPorAlumno TurnoMateriaDAO = new AccesoLogicaMateriaPorAlumno();

    List lista = TurnoMateriaDAO.getAlumnosPorMateria(idCurso, idMateria, fecha);
    GridNuevaAsist.DataSource = lista;
    GridNuevaAsist.DataKeyNames = new string[] { "Id_Alumno" };
    GridNuevaAsist.DataBind();
    }
    }

    Y codigo Capa Datos

    public List getAlumnosPorMateria(int Curso, int Materia, DateTime Fecha)
    {
    try
    {
    connection.Open();
    command.Parameters.AddWithValue("@idCurso", Curso);
    command.Parameters.AddWithValue("@idMateria", Materia);

    command.CommandText = @"SELECT alum.Id_Alumno, alum.Nombre AS NombreAlumno, alum.Apellido, alum.Dni,
    mpal.Id, turm.Id_Turno
    FROM (TurnoMateria turm INNER JOIN MateriaPorAlumno mpal ON mpal.Id_Turno = turm.Id_Turno)
    INNER JOIN Alumno alum ON alum.Id_Alumno = mpal.Id_Alumno
    WHERE turm.Id_Curso = @idCurso AND turm.Id_Materia = @idMateria";

    OleDbDataReader lector = command.ExecuteReader();

    List listEntities = new List();
    while (lector.Read())
    {
    MateriaPorAlumnoEntity materiaPorAlumno = new MateriaPorAlumnoEntity();
    if (lector["Id"] != null)
    materiaPorAlumno.Id = Convert.ToInt32(lector["Id"].ToString());
    if (lector["Id_Alumno"] != null)
    {
    materiaPorAlumno.Alumno = new AlumnoEntity();
    materiaPorAlumno.Alumno.Id_Alumno = Convert.ToInt32(lector["Id_Alumno"].ToString());
    materiaPorAlumno.Alumno.Nombre = lector["NombreAlumno"].ToString();
    materiaPorAlumno.Alumno.Apellido = lector["Apellido"].ToString();
    materiaPorAlumno.Alumno.Dni = Convert.ToInt32(lector["Dni"].ToString());
    }

    listEntities.Add(materiaPorAlumno);
    }

    return listEntities;
    }
    catch (Exception ex)

    Y tengo un codiguito que una vez Ud. me dio:

    OleDbDataAdapter da = new OleDbDataAdapter(com);
    DataTable dt = new DataTable();
    da.Fill(dt);

    dt.Columns.Add("Fecha");

    foreach(DataRow row in dt.Rows){
    row["Fecha"] = TextCalendar.Text;
    }

    GridCargaNota.DataSource = dt;
    GridCargaNota.DataBind();


    Se podra, publico por aqui a Ud., porque en Foro c#, no logro que me respondan todos.....Disculpe las molestias, gracias.......Saludos...

    ResponderEliminar
    Respuestas
    1. hola

      En la presentacion de donde sale idCurso, idMateria? porque no veo que lo tomes de ningun control o del objeto session, recuerda que las variables no conservan estdo.

      En la capa de datos deberias definir la instancia del SqlCommand dentro del metodo, no definas estos objeto de forma global a la clase

      No entendi la ultima parte, si usas listas y entidades porque el codigo final cargas un datatable?

      saludos

      Eliminar
    2. Hola, Leandro.......idCurso, idMateria salen de sendas GridCurso y GridMateria selectedindexchanged, de la Capa Presentacion cuando voy seleccionando dinamicamente.....Por ej:

      Tengo un GridCurso y GridMateria, y cuando selecciono un curso del gridCurso, queda en Viewstate ese Id, y alli nomas, al selecionar curso, me aparece el gridMateria, y cuando selecciono la Materia de ese GridMateria, su Id se guarda en otro ViewState,....... a ambos los guardo en sendas variables idCurso, idMateria


      El codiguito con dt, es un codigo que lo agregue a esta publicacion para ver como se puede adaptar a List de los codigos de Presentacion y Datos que le publico a UD.......Es un codiguito que me facilito Ud., para llenar columnas de Fecha en GridView con seleccionar de Calendar.....Lo puse, como repito, para que vea Ud como se puede adaptar a mi codigo de Presentacion y Datos, para lograr llenar esa columna Fecha en GridNuevaAsist....Perdona que lo moleste, ...........gracias, si puede..

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

    ResponderEliminar
  20. Hola, Leandro, podra darme una mano en esto???, disculpe que lo moleste, gracias...

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

    ResponderEliminar
  22. 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