【问题标题】:Linq: Inner join two tables and return as json for jquery datatableLinq:内连接两个表并返回为jquery数据表的json
【发布时间】:2018-02-11 10:34:48
【问题描述】:

我是新手,在 MVC ASP.net 中使用数据表和 ajax。我有问题,我很难解决这个问题。我试图像标题所说的那样加入两个表并将结果返回到 json 并显示到数据表。但我收到“操作无法完成,因为 DbContext 已被释放。”的错误。任何帮助都对我学习这门语言很有帮助。谢谢你

这是我的代码

public ActionResult Rooms()
        {
            using (RoomReservationEntities db = new RoomReservationEntities())
            {
                var room_query = from room in db.Rooms
                        join roomType in db.Room_Type
                        on room.RoomType_id equals roomType.RoomType_id
                        select new { room.Room_id, room.Room_name, roomType.RoomType, roomType.Room_rate };

                return Json(new { data = room_query }, JsonRequestBehavior.AllowGet);
            }
        }

我的cshtml

@{
    ViewBag.Title = "Rooms";
    Layout = "~/Views/Shared/_AdminMasterPage.cshtml";
}

<h2>Rooms</h2>

<link rel="stylesheet" href="https://cdn.datatables.net/1.10.13/css/jquery.dataTables.min.css" />

<h2>AdminRooms</h2>

<div style="width:90%; margin:0 auto">
    <table id="myDatatable">
        <thead>
            <tr>
                <th>Room Name</th>
                <th>Room Type</th>
                <th>Room Rate</th>
            </tr>
        </thead>

    </table>
</div>


@section scritps{
    <script src="~/Scripts/jquery.validate.min.js"></script>
    <script src="~/Scripts/jquery.validate.unobtrusive.min.js"></script>
    <script src="https://cdn.datatables.net/1.10.13/js/jquery.dataTables.min.js"></script>
    <script src="~/Scripts/jquery-ui-1.12.1.min.js"></script>
}

<script>
    $(document).ready(function () {
        var oTable = $('#myDatatable').DataTable({
            "ajax": {
                "url": '/Admin/Rooms',
                "type": "get",
                "datatype":"json"
            },
            "columns": [
                { "data": "Room_name", "autoWidth": true },
                { "data": "RoomType", "autoWidth": true },
                { "data": "Room_rate", "autoWidth": true }
            ]

        })
    })
</script>

【问题讨论】:

    标签: c# linq datatables


    【解决方案1】:

    这是因为您正在使用“使用”阻止 using 块调用 Dispose 方法,只要它找到右括号。 另一个原因可能是因为 Linq 查询在被 ToList() 访问或枚举之前不会触发。在您的代码中,没有这样的方法可以检查以下代码:

    public ActionResult Rooms()
            {
                using (RoomReservationEntities db = new RoomReservationEntities())
                {
                    var room_query = (from room in db.Rooms
                            join roomType in db.Room_Type
                            on room.RoomType_id equals roomType.RoomType_id
                            select new { room.Room_id, room.Room_name, roomType.RoomType, roomType.Room_rate }).ToList();
    
                    return Json(new { data = room_query }, JsonRequestBehavior.AllowGet);
                }
            }

    您可以找到有关 Linq 查询早期绑定和后期绑定的更多信息

    【讨论】:

    • 非常感谢先生。你拯救了我的一天
    猜你喜欢
    • 2012-06-05
    • 1970-01-01
    • 1970-01-01
    • 2014-01-12
    • 2011-09-30
    • 2015-11-15
    • 2015-04-23
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多