EF通过接口

问题描述:

进出口新的MVC和EF和有点纠结,我有以下接口的添加新项:EF通过接口

public interface IReportDataSource 
{ 
    IQueryable<PostDetail> PostDetails { get; } 
    void Save(); 
} 

这个数据库方面:

public class ReportDb: DbContext, IReportDataSource 
{ 
    public DbSet<PostDetail> PostDetails { get; set; } 

    public ReportDb() 
     : base("DefaultConnection") 
    { 
    } 

    void IReportDataSource.Save() 
    { 
     SaveChanges(); 

    } 

    IQueryable<PostDetail> IReportDataSource.PostDetails 
    { 
     get { return PostDetails; } 
    } 
} 

,因此这个动作

[HttpPost] 
    public ActionResult PostDetails(PostDetailsViewModel viewModel) 
    { 
     if (ModelState.IsValid) 
     { 
      //save 

      // var storePost = _db.PostDetails.Single(); 

      var pd = new PostDetail(); 
      pd.Grade = viewModel.Grade; 
      pd.ContractType = viewModel.SelectedContractType; 
      pd.Directorate = viewModel.SelectedDirectorate; 
      pd.Division = viewModel.Division; 
      pd.HoursPerWeek = viewModel.HoursPerWeek; 
      pd.Length = viewModel.SelectedContractLength; 
      pd.LineManager = viewModel.LineManager; 
      pd.LineManagerContactNumber = viewModel.LineManagerContactNumber; 
      pd.PositionTitle = viewModel.PositionTitle; 
      pd.Section = viewModel.Section; 
      pd.SpecifyDuration = viewModel.SpecifyDuration; 
      pd.SpecifyEndDate = viewModel.SpecifyEndDate; 

      _db.Save(); 

      return RedirectToAction("Index", "HomeController"); 

     } 

我想我需要能够通过我的接口调用添加新的PostDetails对象到datacontext是前面打电话保存?

我觉得_db.PostDetails.Add(pd)保存之前可以帮助从我所看到的例子

+0

感谢这就是我要怎样做,我的问题是,我没有得到来自_db.PostDetails – user2390419

+0

add方法DbSet实现更接口比IQUERY:公共类DbSet :的DBQuery ,IDbSet ,IQueryable的,IEnumerable的,IQueryable的,IEnumerable的,IInternalSetAdapter – Ben

+0

你可以考虑在界面IReportDataSource IQueryable的更改为DbSet 。 – Ben