Entity Framework如何检查数据库表是否有新记录添加

3
我正在尝试在Entity Framework中跟踪数据库表是否有新记录添加。如果数据库表中有任何新的记录添加,我只想从控制器获取记录。有什么建议吗?
        [HttpGet]

        public JsonResult DisplayChatMsgs()
        {
            var chatMsgs = dbObj.tblChats.ToList();
            return Json(chatMsgs, JsonRequestBehavior.AllowGet);
        }

客户:

        $.ajax({
            url: "Default/DisplayChatMsgs",
            type: "Get",
            success: function (data) {
                //var mdata = $.parseJSON(data.d);
                //The Div to be populated
                $('#msgBox').empty();

                content = "";
                //Looping thru each record
                $.each(data, function (i, record) {
                    //Properties available in Model
                    //We need to specify the properties in our model
                    content += "<tr><td><b>" + record.toName + "</b>:</td><td>" + record.chatMsg + "</td></tr>";

                });
                table = "<table>" + content + "</table>"
                $(table).appendTo('#msgBox');
                $("#msgBox").animate({ scrollTop: $('#msgBox')[0].scrollHeight }, 1000);
            }
        });
1个回答

2
我有99.99%的把握说EF内置了一种方法来获取当行被添加到数据库时的通知。
你可以尝试一个解决方案,即使用SignalR:每次你的应用程序写入该表时,都会向客户端发布一条消息以获取新数据。这种方法不够优雅的部分是你必须连接到每个写入该表的地方。但是如果你使用Repository Pattern,那么你只需要在一个地方进行更改就可以了。

是的,SignalR是正确的选择,因为您似乎正在构建一个聊天应用程序。在发布/订阅之前,这种类型的事情是通过Flash或Java在Web上完成的,这正是因为尝试通过JavaScript进行长轮询并异步区分“旧”与“新”的内容非常困难,如果不完全不可能做到正确。 - Chris Pratt
2
大多数关于SignalR的教程都是构建聊天应用程序的教程。 - Liviu Mandras

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接