2

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

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

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

4

1 回答 1

5

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

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
    }
  }

}
于 2013-01-23T00:32:49.587 回答