jho*_*els 15 events entity-framework entity-framework-4.1
我想为插入和更新某些EF对象的事件添加一些逻辑.我有一个带有category对象的MVC应用程序,它有一个属性,它是name属性的一个slugified版本.
public class Category
{
public string Name { get; set; }
public string UrlName{ get; set; }
}
Run Code Online (Sandbox Code Playgroud)
我想仅在插入和更新事件上设置UrlName属性,因为我的slugify逻辑非常精细.
我知道我可以在上下文本身的SaveChanges()函数中添加一些逻辑,但我更愿意将代码放在实体本身附近.
有没有办法首先使用EF代码完成这样的事情?
Era*_*nga 27
您可以使用在插入和更新之前调用的方法来设置基类
public abstract class Entity
{
public virtual void OnBeforeInsert(){}
public virtual void OnBeforeUpdate(){}
}
public class Category : Entity
{
public string Name { get; set; }
public string UrlName{ get; set; }
public override void OnBeforeInsert()
{
//ur logic
}
}
Run Code Online (Sandbox Code Playgroud)
然后在你的 DbContext
public override int SaveChanges()
{
var changedEntities = ChangeTracker.Entries();
foreach (var changedEntity in changedEntities)
{
if (changedEntity.Entity is Entity)
{
var entity = (Entity)changedEntity.Entity;
switch (changedEntity.State)
{
case EntityState.Added:
entity.OnBeforeInsert();
break;
case EntityState.Modified:
entity.OnBeforeUpdate();
break;
}
}
}
return base.SaveChanges();
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
6897 次 |
| 最近记录: |