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)
保存之前可以帮助从我所看到的例子
感谢这就是我要怎样做,我的问题是,我没有得到来自_db.PostDetails – user2390419
add方法DbSet实现更接口比IQUERY:公共类DbSet:的DBQuery ,IDbSet ,IQueryable的,IEnumerable的,IQueryable的,IEnumerable的,IInternalSetAdapter –
Ben
你可以考虑在界面IReportDataSource IQueryable的更改为DbSet 。 –
Ben