public void TestSaveUpdateLog()
        {
            // 待测试服务.
            IUpdateLogService service = new DefaultUpdateLogServiceImpl();



            // 以自己的分类表为例子, 进行模拟测试.
            using (MyUpdateLogContext context = new MyUpdateLogContext())
            {
                // 模拟: 更新前数据.
                var beforeData = context.UpdateLogCategorys.FirstOrDefault(p => p.CategoryCode == "TEST_INSERT");

                // 模拟:更新后数据.
                var afterData = new UpdateLogCategory()
                {
                    CategoryCode = "TEST_INSERT",
                    CategoryName = "(更新后)"
                };

                // 测试
                string resultMsg = null;


                // 测试插入.
                bool testInsert = service.SaveUpdateLog("TEST_INSERT", afterData.CategoryCode, "测试用户1", null, afterData, ref resultMsg);
                // 处理应该成功.
                Assert.IsTrue(testInsert);


                // 测试更新.
                bool testUpdate = service.SaveUpdateLog("TEST_UPDATE", afterData.CategoryCode, "测试用户2", beforeData, afterData, ref resultMsg);
                // 处理应该成功.
                Assert.IsTrue(testUpdate);


                // 测试删除.
                bool testDelete = service.SaveUpdateLog("TEST_DELETE", beforeData.CategoryCode, "测试用户3", beforeData, null, ref resultMsg);
                // 处理应该成功.
                Assert.IsTrue(testDelete);
            }
        }
コード例 #2
0
        static void Main(string[] args)
        {
            // 当 Code First 与数据库结构不一致时
            // 自动升级到最新的版本.
            Database.SetInitializer(new MigrateDatabaseToLatestVersion <MyUpdateLogContext, MyUpdateLog.Migrations.Configuration>());


            using (MyUpdateLogContext context = new MyUpdateLogContext())
            {
                var query =
                    from data in context.UpdateLogCategorys
                    select data;

                foreach (var item in query)
                {
                    Console.WriteLine(item.CategoryCode);
                }
            }

            Console.WriteLine("Finish!");
            Console.ReadLine();
        }
コード例 #3
0
        public bool SaveUpdateLog(string categoryCode, object keyData, string updateUser, object beforeData, object afterData, ref string resultMsg)
        {
            // 首先,排除掉 更新前与更新后,  都是 null 的情况.
            if (beforeData == null && afterData == null)
            {
                resultMsg = "更新前的数据与更新后的数据,都是 null.";
                return(false);
            }

            // 然后, 排除 keyData 是 null 的情况.
            if (keyData == null)
            {
                resultMsg = "主键数据不能为空!";
                return(false);
            }

            try
            {
                List <UpdateItem> updateItemList = this.GetUpdateItemList(beforeData, afterData);
                string            jsonString     = JsonConvert.SerializeObject(updateItemList);


                using (MyUpdateLogContext context = new MyUpdateLogContext())
                {
                    // 检查分类是否存在.
                    var category = context.UpdateLogCategorys.Find(categoryCode);
                    if (category == null)
                    {
                        resultMsg = String.Format("未知的分类代码: {0}", categoryCode);
                        return(false);
                    }

                    UpdateLogDetail detail = new UpdateLogDetail()
                    {
                        // 分类代码.
                        CategoryCode = categoryCode,
                        // 主键数据.
                        KeyData = keyData.ToString(),
                        // 什么时间更新的.
                        WhenUpdate = DateTime.Now,
                        // 谁更新的.
                        WhoUpdate = updateUser,
                        // 更新了什么.
                        WhatUpdate = jsonString,
                    };

                    // 插入.
                    context.UpdateLogDetails.Add(detail);

                    // 保存.
                    context.SaveChanges();
                }


                resultMsg = SUCCESS_MESSAGE;
                return(true);
            }
            catch (Exception ex)
            {
                resultMsg = ex.Message;
                return(false);
            }



            throw new NotImplementedException();
        }