- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
问题:在我的模型中,我需要在触发任何 ORM 事件之前使用回调来处理数据库实体对象。另外,我正在寻找一种方法来应用 named-scope所以我不需要为每个查询提供特定条件。举个例子;当我在 dbcontext 对象上对 Items 使用 Find 时,我不需要为每次调用提及 active = true。
问题:
有什么可以与callbacks methods of ActiveRecord相媲美的吗?在 ASP.NET MVC(EntityFramework)中?如:after_save、before_save、after_create、before_create、after_validation、before_validation等。
我应该创建一个“模型 View ”来为每个查询附加命令性条件吗?请提供示例或资源/教程。
最佳答案
没有。没有可用的此类事件/回调。 EF ObjectContext
仅提供 ObjectMaterialized
和 SavingChanges
事件。当实体从数据库中具体化(加载)时,第一个可用于使用react,第二个可用于在保存更改之前处理任何事情(它类似于覆盖 SaveChanges
方法)。
例子:
public void SavingChanges(object sender, EventArgs e)
{
ObjectContext context = (ObjectContext)sender;
var entities = context.ObjectStateManager
.GetObjectStateEntries(EntityState.Added)
.Where(e => !e.IsRelationship)
.Select(e => e.Entity)
.OfType<MyEntity>();
// Now you have all entities of type MyEntity which will be added
// You can use similar approach for other type of entities or
// modified entities or deleted entities
}
EF 不提供任何类型的全局条件/命名范围。您必须始终确保您的查询包含所有条件。例如,您可以创建自定义扩展方法,而不是默认的 Find 使用该扩展方法,这将添加您所有的附加条件
示例:
public static MyEntity FindWithCondition(this IQueryable<MyEntity> query, int id)
{
return query.Where(...).FirstOrDefault(e => e.Id == id);
}
关于asp.net-mvc - EntityFramework 的 Activerecord 回调和 NamedScope 版本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8640816/
(这个问题最初是在 Ninject Google Group 中提出的,但我现在看到 Stackoverflow 似乎更活跃。) 我正在使用 NamedScopeExtension 将相同的 View
我正在尝试对我是否在命名范围内进行条件绑定(bind)。 我的接口(interface) ILogger - 使用 Ninject Logger 扩展的默认行为,我们将特定类型的记录器实现注入(inj
我有一个模式,在我工作时一直出现。我几乎完全是一名 Web 开发人员,Ninject 的 InRequestScope 可以满足我 99% 的需求。 这是模式: // abstractions int
我的项目由服务和存储库构成(所有存储库共享数据库上下文)。在我的一个服务层中,我有一个使用存储库写入数据库的异步方法。 Web 请求将在此方法可以开始使用它之前完成并处理上下文。我试图理解NamedS
我正在使用 Rails 2.3.9。为了说明这个问题,假设我们在模型上有一个命名范围: class Book 'isbn IS NOT NULL' end 如果你得到了命名范围的类,ActiveRe
问题:在我的模型中,我需要在触发任何 ORM 事件之前使用回调来处理数据库实体对象。另外,我正在寻找一种方法来应用 named-scope所以我不需要为每个查询提供特定条件。举个例子;当我在 dbco
我是一名优秀的程序员,十分优秀!