HTTPPost操作中的DbContext和Interface

本文关键字:Interface DbContext 操作 HTTPPost | 更新日期: 2023-09-27 18:23:51

我正在使用StructureMap来解析依赖关系。我面临着一个我不知道如何解决的问题,因为我知道发布表单的唯一方法是没有依赖项注入,这否定了在我的项目中使用StructureMap的全部本质。错误是我的IdbContext模型中没有Add方法。下面是我的方法。

我有一个名为Module的模型,定义如下

   public class Module
   {
       public virtual int ID { get; set; }
       public virtual string Name { get; set; }
       public virtual DateTime? DateCreated { get; set; }
       public virtual string ModuleDescription { get; set; }
   }

以及如下定义的接口。

    public interface ISolnetDataSource
    {
       IQueryable<Module> Modules { get; }
       void Save();
    }

类似下面的DbContext

     public class CMSDB : DbContext, ISolnetDataSource
      {
         public CMSDB() : base("DefaultConnection")
          {
          }
        public DbSet<Module> Modules { get; set; }
        void ISolnetDataSource.Save() 
           {
             SaveChanges();
           }
           IQueryable<Module> ISolnetDataSource.Modules
           {
              get { return Modules; }
           }              
      }

我的控制器被定义为

      [HttpPost]
    public ActionResult Index(CreateModulesViewModels module)
    {
        ViewBag.ListModule = _db.Modules.ToList();
        if (ModelState.IsValid)
        {
            var model = new CreateModulesViewModels();
            var CreateModule = new Module();
            CreateModule.Name = module.Name;
            CreateModule.ModuleDescription = module.ModuleDescription;
            CreateModule.DateCreated = DateTime.Now;
            //_db.modules.Add(CreateModule);
            _db.Save();
            return View(model);
        }
        return View(module);
    }

我面临的挑战是,我不能做_db.modules.Add(CreateModule)(控制器中的注释行)来添加新记录。我做错了什么。我想用最好的方法来做这件事。

HTTPPost操作中的DbContext和Interface

关于:

_db.modules.Entry(CreateModule).State = System.Data.EntityState.Added;