限制在Breeze.js中创建新实体

时间:2013-01-22 23:48:00

标签: breeze

假设我想使用Breeze创建一个Task实体(我正在使用EF),但由于这是一个真正的任务应用程序,该任务必须与当前登录的用户相关联。任务具有需要在保存期间填充的UserId外键,这就是我被卡住的地方。在大多数客户端应用程序中执行此操作对我来说是一个外国概念。我不能很好地在客户端指定UserId外键,因为我不希望聪明的用户可能为另一个用户创建任务。我在哪里可以进入保存过程以使用当前登录的用户填充UserId FK(在本例中为System.Web.HttpContext.Current.User.Identity.Name)。

随意指出我的另一篇文章或文档的方向。正如我所说,这对我来说是一个新概念所以我真的不知道该搜索什么。

对于回答这个问题的人,我全心全意地爱你。 :)

1 个答案:

答案 0 :(得分:5)

查看Breeze网站上有关Custom EFContextProvider's Save Interceptor的文档。您需要创建自己的提供程序并实现BeforeSaveEntity方法。在该方法中,您可以将任务的UserId设置为当前用户,就像使用MVC4一样。

public class TasksContextProvider: EFContextProvider<YourExistingDbContext>  
{

  public override bool BeforeSaveEntity(EntityInfo entityInfo) 
  {
    if (entityInfo.Entity.GetType() == typeof(YourTask)
        && entityInfo.EntityState == EntityState.Added) 
    {
      // add your logic here to set the user and/or do validation
    }
  }

}