2013-05-03 47 views
0

我正在开发一个使用C#和SQL Server 2005的ASP.Net MVC 3应用程序。 我想根据记录的用户类型定制我的界面。 我在微软网站跟随 this tuto ,当我在过滤器类(ActionLogFilterAttribute)中使用ActionLog实例时,我被卡住了。 Infact,这个类是在'StoreDB.designer.cs'类中声明的,我没有,因为我使用实体框架的'代码优先'方法创建了我的项目。 我只有这一类上下文:如何筛选ASP MVC中的日志记录?

using System; 
using System.Collections.Generic; 
using System.Linq; 
using System.Web; 
using System.Data.Entity; 
using System.ComponentModel.DataAnnotations; 
namespace MvcApplication2.Models 
{ 
    public class GammeContext : DbContext 
    { 
     public GammeContext() 
     { 
      Database.SetInitializer(new DropCreateDatabaseIfModelChanges<GammeContext>()); 
     } 

     public DbSet<Account> Accounts { get; set; } 
     public DbSet<Ns_AFaire> Ns_AFaires { get; set; } 
     public DbSet<Famille> Familles { get; set; } 
     public DbSet<Fonction> Fonctions { get; set; } 
     public DbSet<Fonction_Poste> Fonction_Postes { get; set; } 
     public DbSet<Gamme> Gammes { get; set; } 
     public DbSet<Historique> Historiques { get; set; } 
     public DbSet<Ligne> Lignes { get; set; } 
     public DbSet<Phase> Phases { get; set; } 
     public DbSet<Poste> Postes { get; set; } 
     public DbSet<Produit> Produits { get; set; } 
     public DbSet<Profile_Ga> Profil_Gas { get; set; } 
     public DbSet<Sous_Famille> Sous_Familles { get; set; } 
     public DbSet<UF> UFs { get; set; } 
     public DbSet<User> Users { get; set; } 
     public DbSet<Num_Serie> Num_Series { get; set; } 

     protected override void OnModelCreating(DbModelBuilder modelBuilder) 
     { 
      modelBuilder.Conventions.Remove<System.Data.Entity.ModelConfiguration.Conventions.PluralizingTableNameConvention>(); 
     } 
    } 
} 

,这是我创建过滤器类:

using System; 
using System.Collections.Generic; 
using System.Linq; 
using System.Web; 
using System.Web.Mvc; 
using MvcApplication2.Models; 

namespace MvcApplication2.Filters 
{ 
    public class ActionLogFilterAttribute : ActionFilterAttribute, IActionFilter 
    { 
     public override void OnActionExecuting(ActionExecutingContext filterContext) 
     { 
      GammeContext db = new GammeContext(); 
      ActionLog log = new ActionLog() 
      { 
       Controller = filterContext.ActionDescriptor.ControllerDescriptor.ControllerName, 
       Action = filterContext.ActionDescriptor.ActionName, 
       IP = filterContext.HttpContext.Request.UserHostAddress, 
       DateTime = filterContext.HttpContext.Timestamp 
      }; 
      db.AddToActionLogs(log); 
      db.SaveChanges(); 
      base.OnActionExecuting(filterContext); 
     } 
    } 
} 

那么,有没有什么办法解决?

回答

0

他正在使用的ActionLog实例是与他的ActionLog表相关的Enitity。

你需要做的是增加自己的ActionLog实体 - 这是所有:)

+0

THX你的答案,,,但可我怎么知道? – anouar 2013-05-03 22:34:25

+0

您可以添加模型和映射器类,并添加一个'public DbSet ActionLogs {get;组; }给你的GammeContext。 – Dietz 2013-05-06 06:15:08