我想知道是否有更好的方法从重写的SaveChanges()方法内部更新实体属性。我目前使用的是直接SQL。
这里是来自SaveChanges()的片段
public override SaveChanges(){
[...]
if (updateId > 0)
{
string q = @"UPDATE NewClub SET
LastActivityDate='" + DateTime.Now + "' WHERE Id=" + updateId;
using (var context = new ReportingContext())
{
//ToDo: exception handling
var result = context.Database.ExecuteSqlCommand(q);
}
}
try
{
saveSuccess = base.SaveChanges() > 0;
}
catch (Exception e)
{
string ex = e.ToString();
}
return saveSuccess ? 1 : 0;
}发布于 2014-05-20 18:34:09
我正在用这段视频开头描述的技巧来开发我们最新的应用程序,到目前为止已经取得了很大的成功。
public int SaveChanges(IPrincipal user)
{
foreach (var dbEntityEntry in this.ChangeTracker.Entries()
.Where(e => e.Entity is BaseEntity &&
((e.State == EntityState.Modified) || (e.State == EntityState.Added))))
{
((BaseEntity) dbEntityEntry.Entity).ModificationBy = user.Identity.Name;
((BaseEntity)dbEntityEntry.Entity).ModificationDate = TimeProvider.Current.Now;
}
return base.SaveChanges();
}我们只通过上下文接口公开此Save方法。
public interface IMyContext
{
int SaveChanges(IPrincipal user);
}https://stackoverflow.com/questions/23767288
复制相似问题