none
Entity Framework Ayuda Consulta RRS feed

  • Pregunta

  •  Hola quisiera hacer consulta Join Select * from Menu M Left Join OpcionMenu OM ON M.IdMenu=OM.IdMenu pues solo pude hacer select * from Menu (db.Menu.ToList();)

    public class HomeController : Controller
        {
            private Layers.Data.Entities db = new Layers.Data.Entities();
            // GET: Home
            [Authorize]
            public ActionResult Index()
            {
                var list = db.Menu.ToList();
                   return View(list);    
            }
        }

    miércoles, 22 de marzo de 2017 19:11

Respuestas

Todas las respuestas

  • hola

    podria ser algo como esto

    public ActionResult Index()
    {
    	var list = (from menu in db.Menu
    				join opt in OpcionMenu on menu.IdMenu equals opt.IdMenu
    				select menu).ToList();
    
    	return View(list);    
    }

    join (Cláusula, Referencia de C#)

    saludos


    Leandro Tuttini

    Blog
    MVP Profile
    Buenos Aires
    Argentina

    • Marcado como respuesta Gabriela345 jueves, 23 de marzo de 2017 14:04
    miércoles, 22 de marzo de 2017 19:23
  • estoy llenando eso para hacer un Menu dinamico desde la base de datos

    <li class="treeview 
                                @Html.IsSelected(controller: "Empleados")
                            ">

                            <a href="#">
                                <i class="fa fa-certificate"></i> <span>General</span>
                                <span class="pull-right-container">
                                    <i class="fa fa-angle-left pull-right"></i>
                                </span>
                            </a>

                            <ul class="treeview-menu
                                @Html.IsSelected(controller: "Empleados", cssClass: "in")">
                                <li class="@Html.IsSelected(controller: "Empleados")"><a href="@Url.Action("Index", "Empleados")"><i class="fa fa-circle-o"></i> Empleados</a></li>

                            </ul>

                            </li>

    miércoles, 22 de marzo de 2017 19:36
  • ok

    pero si usas entity framework porque no relacionas las entidades desde el mapping, asi no tienes que hacer ningun join

    sino que directo usas el Include()

    Entity Framework Loading Related Entities

    o sea

    public ActionResult Index()
    {
    	var list = db.Menu.Include(x=> x.OptionMen).ToList();
    
    	return View(list);    
    }

    saludos


    Leandro Tuttini

    Blog
    MVP Profile
    Buenos Aires
    Argentina

    • Marcado como respuesta Gabriela345 jueves, 23 de marzo de 2017 14:04
    miércoles, 22 de marzo de 2017 20:23
  • Genial ya estoy usando con foreach pero hace que repita el menu dos veces..

                        foreach (var item in Model)
                        {
                            foreach (var sub in item.OpcionesMenu)
                            {
                                    <li class="treeview
                                @Html.IsSelected(controller: @sub.Descripcion)

                            ">
                                        <a href="#">
                                            <i class="fa fa-certificate"></i> <span>@item.Descripcion</span>
                                            <span class="pull-right-container">
                                                <i class="fa fa-angle-left pull-right"></i>
                                            </span>
                                        </a>

                                        <ul class="treeview-menu
                                @Html.IsSelected(controller: @sub.Descripcion, cssClass: "in")">

                                            <li class="@Html.IsSelected(controller: @sub.Descripcion)"><a href="@Url.Action("Index", @sub.Descripcion)"><i class="fa fa-circle-o"></i> @sub.Descripcion </a></li>

                                        </ul>

                                    </li>
                                }                     
                        }

    miércoles, 22 de marzo de 2017 20:37
  • pero no se supone qe el menu es un arbol? si es asi no veo html que definas para definir el root y las hojas

    foreach (var item in Model)
    {
    	<li class="treeview
    		@Html.IsSelected(controller: @sub.Descripcion)">
    	<a href="#">
    		<i class="fa fa-certificate"></i> <span>@item.Descripcion</span>
    		<span class="pull-right-container">
    			<i class="fa fa-angle-left pull-right"></i>
    		</span>
    	</a>
    	
    	foreach (var sub in item.OpcionesMenu)
    	{
    		<ul class="treeview-menu
    		@Html.IsSelected(controller: @sub.Descripcion, cssClass: "in")">
    
    					<li class="@Html.IsSelected(controller: @sub.Descripcion)"><a href="@Url.Action("Index", @sub.Descripcion)"><i class="fa fa-circle-o"></i> @sub.Descripcion </a></li>
    
    		</ul>
    	}  
    		
    	</li>		
    } 

    analiza la entidad que envias a la view para entender como se arma el arbols de datos

    saludos


    Leandro Tuttini

    Blog
    MVP Profile
    Buenos Aires
    Argentina

    miércoles, 22 de marzo de 2017 21:04
  •  

    Si pero el @sub.Descripcion que esta subrayado no existe porque no esta dentro del segundo Foreach

    @foreach (var item in Model)
                            {
                                <li class="treeview
                                    @Html.IsSelected(controller: @sub.Descripcion)">

                                    <a href="#">
                                        <i class="fa fa-certificate"></i> <span>@item.Descripcion</span>
                                        <span class="pull-right-container">
                                            <i class="fa fa-angle-left pull-right"></i>
                                        </span>
                                    </a>

                                    @foreach (var sub in item.OpcionesMenu)
                                    {

                                    <ul class="treeview-menu
                                            @Html.IsSelected(controller: @sub.Descripcion, cssClass: "in")">

                                        <li class="@Html.IsSelected(controller: @sub.Descripcion)"><a href="@Url.Action("Index", @sub.Descripcion)"><i class="fa fa-circle-o"></i> @sub.Descripcion </a></li>

                                    </ul>
                                    }
                                </li>

                                }

    miércoles, 22 de marzo de 2017 21:12
  • ok a donde apunto es que debes analizas como esta armado el arbol y replicar este en el html

    en ese item deberia poner un dato del Menu y no del SubMenu

    saludos


    Leandro Tuttini

    Blog
    MVP Profile
    Buenos Aires
    Argentina

    miércoles, 22 de marzo de 2017 21:59