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); } }
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(); }
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(); }