我对实体框架(6)的熟悉程度略高于基础。我建立了一个基于我从书中得到的模式的系统。我有效地使所有数据库调用非常通用。然而,它没有解决调用存储过程,我有一些我需要的。我完全确定如何根据这种模式调用它们。
以下是Fetches的建立方式:
public class EFRepository<T> : IRepository<T> where T : class
{
public EFRepository(DbContext dbContext)
{
if (dbContext == null)
throw new ArgumentNullException("dbContext");
DbContext = dbContext;
DbSet = DbContext.Set<T>();
}
protected DbContext DbContext { get; set; }
protected DbSet<T> DbSet { get; set; }
public virtual IQueryable<T> GetAll()
{
return DbSet;
}
public virtual IQueryable<T> GetTop50()
{
return DbSet.Take(50);
}
public virtual T GetById(int id)
{
return DbSet.Find(id);
}
}
所以,我想问题是,我将如何进行调用,传入存储过程的名称和参数?结果仍是DbSet
吗?在EF中建立的存储过程 IS 。
public virtual ObjectResult<PropertiesContactIsInvolvedIn_Result> PropertiesContactIsInvolvedIn(Nullable<int> contactID)
{
var contactIDParameter = contactID.HasValue ?
new ObjectParameter("ContactID", contactID) :
new ObjectParameter("ContactID", typeof(int));
return ((IObjectContextAdapter)this).ObjectContext.ExecuteFunction<PropertiesContactIsInvolvedIn_Result>("PropertiesContactIsInvolvedIn", contactIDParameter);
}
此外,正如我所说,涉及存储库方法,实体表达如下:
public IRepository<PropertiesContactIsInvolvedIn_Result> PropertiesContactIsInvolvedIn { get { return GetStandardRepo<PropertiesContactIsInvolvedIn_Result>(); } }
IRepository<PropertiesContactIsInvolvedIn_Result> PropertiesContactIsInvolvedIn { get; }
答案 0 :(得分:0)
您应该能够在上下文中看到存储过程
using (var context = new EFRepository())
{
var ids= context.PropertiesContactIsInvolvedIn(id);
}