【发布时间】:2014-01-09 06:04:39
【问题描述】:
我在 Visual Studio 2013 中使用 ASP.NET mvc 5,并倾向于通过通用存储库从控制器类中的函数表 (SQL Server) 中读取数据。我有 IGenericRepository,它具有 IQueryable 一个功能,我有 GenericRepository 类,我正在实现这个接口。我得到了从 baseContext 继承的 FunctionContext。我有 baseContext 的原因是所有的 dbcontexts 都可以使用一个路径来访问数据库,但同时保持表的数量限制在业务需要。
我已经设法实现了 genericRepository,但在 GenericRepository 中调试时似乎得到了针对 _dbSet 的空数据,并且我无法读取控制器类中的数据,而且出现错误
“变量查询”
EntityFramework.dll 中出现“System.InvalidOperationException”类型的异常,但未在用户代码中处理
在此非常感谢....
通用存储库接口
public interface IGenericRepository<TEntity> : IDisposable
{
IQueryable<TEntity> GetAll();
}
通用存储库
public class GenericRepository<TEntity> : IGenericRepository<TEntity> where TEntity : class
{
protected DbSet<TEntity> _DbSet;
private readonly DbContext _dbContext;
public GenericRepository()
{
}
public GenericRepository(DbContext dbContext)
{
this._dbContext = dbContext;
_DbSet = _dbContext.Set<TEntity>();
}
public IQueryable<TEntity> GetAll()
{
return _DbSet;
}
public void Dispose()
{
}
}
基础上下文
public class BaseContext<TContext> : DbContext where TContext : DbContext
{
static BaseContext()
{
Database.SetInitializer<TContext>(null);
}
protected BaseContext()
: base("name = ApplicationDbConnection")
{ }
}
函数上下文
public class FunctionsContext : BaseContext<FunctionsContext>
{
public DbSet<App_Functions> Functions { get; set; }
}
函数映射类
[Table("Functions")]
public class App_Functions
{
public App_Functions()
{
}
[Key]
public int Function_ID { get; set; }
[StringLength(50)]
[Required]
public string Title { get; set; }
public int Hierarchy_level { get; set; }
}
功能域类
public class Functions
{
public Functions()
{
}
public int Function_ID { get; set; }
public string Title { get; set; }
public int Hierarchy_level { get; set; }
}
控制器类
public class HomeController : Controller
{
public ActionResult Index()
{
using (var repository = new GenericRepository<Functions>(new FunctionsContext()))
{
?????????????????????????????????
var query = repository.GetAll().Select(x => new Functions
{
Function_ID = x.Function_ID,
Title = x.Title,
Hierarchy_level = x.Hierarchy_level
});
foreach(var item in query)
{
var a2 = item.Title;
}
}
return View();
}
}
【问题讨论】:
标签: c# asp.net-mvc entity-framework repository-pattern