c#-SaveChanges()中的返回字典
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了c#-SaveChanges()中的返回字典,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含2295字,纯文字阅读大概需要4分钟。
内容图文
![c#-SaveChanges()中的返回字典](/upload/InfoBanner/zyjiaocheng/681/6e17af1197e2426fb4c72b41d4addf48.jpg)
我正在重写SaveChanges()方法,以便可以使用ChangeTracker来获取实体的修改后的属性.我需要返回一个Dictionary< string,string>修改后的属性,以便在我的控制器中可以调用审核服务.到目前为止,我的SaveChanges()方法看起来像:
public override int SaveChanges()
{
var changeInfo = ChangeTracker.Entries()
.Where(t => t.State == EntityState.Modified)
.Select(t => new {
Original = t.OriginalValues.PropertyNames.ToDictionary(pn => pn, pn => t.OriginalValues[pn]),
Current = t.CurrentValues.PropertyNames.ToDictionary(pn => pn, pn => t.CurrentValues[pn])
});
Dictionary<string, string> modifiedProperties = new Dictionary<string, string>();
foreach (var item in changeInfo)
{
foreach (var origValue in item.Original)
{
var currValue = item.Current[origValue.Key];
if ((origValue.Value != null && currValue != null) && !origValue.Value.Equals(currValue))
{
modifiedProperties.Add(origValue.Key, string.Format("Old Value: {0}, New Value: {1}", origValue.Value, currValue));
}
}
}
return base.SaveChanges();
}
有没有办法在我的控制器中访问ModifyedProperties词典,以便可以将其传递给我的服务?
控制器:
if (validator.IsValid())
{
_workRequestRepo.Save(workRequest);
_auditService.Log(UserId, modelId, "Work Order", "Edit", modifiedProperties);
}
解决方法:
使用IOC,我想您会遇到以下情况:
(这是假设进行审核而不是修订)
介绍:
public PersonController
{
private IPersonBL _personBL;
public PersonController(IPersonBL personBL)
{
_personBL = personBL
}
public ActionResult SavePerson(PersonVM model)
{
// if ModelState etc etc
var person = Mapper.Map<Person>(model);
_personBL.Save(person)
}
}
业务层
public PersonBL : IPersonBL
{
private IAuditService _auditService;
private IPersonRepo _personRepo;
public PersonBL(IAuditService auditService,
IPersonRepo personRepo)
{
_auditService = auditService;
_personRepo = personRepo;
}
public void Save(Person person)
{
PersonDTO personDTO = Mapper.Map<PersonDTO>(person);
var result = _personRepo.Save(personDTO);
if (result.Count > 0)
{
_auditService.Audit(result);
}
}
}
资料层
public PersonDL : IPersonDL
{
private DbContext _context;
public PersonDL(DbContext dbContext)
{
_context = dbContext;
}
public IDictionary<string, string> Save(PersonDTO person)
{
var result = new Dictionary<string, string>()
_context.Persons.Add(person);
var saveCount = _context.SaveChanges();
if (saveCount > 0)
{
// Do Object Tracking
// Populate result;
}
return result;
}
}
内容总结
以上是互联网集市为您收集整理的c#-SaveChanges()中的返回字典全部内容,希望文章能够帮你解决c#-SaveChanges()中的返回字典所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。