【发布时间】:2015-05-20 07:19:56
【问题描述】:
我想将 Dbset 对象 传递给我的方法。
这是我的方法:
public static class MyClass
{
public static Floor ReturnObject(this DbSet<Floor> floor, int Id)
{
var context = floor.passContext() as MyDBContext;
var data = context.floors.Where(a =>a.Id == Id).FirstOrDefault();
return ad;
}
}
public class MyDBContext: DbContext
{
public DbSet<Floor> floors { get; set; }
}
public static DbContext passContext<TEntity>(this DbSet<TEntity> dbSet)
where TEntity : class
{
//code....
}
现在我想使用我的 static class MyClass 方法,即 ReturnObject。
我想在我的控制器中使用 ReturnObject 方法。
我知道我可以在我的控制器中像这样声明它为私有成员:
这是我的控制器:
public class MyController
{
private DbSet<Floor> floor;//but is this a good way???
public ActionResult Index(int Id)
{
var data=MyClass.ReturnObject(????,Id)//what should come in place of question mark??
}
}
我应该如何将我的第一个参数传递给 ReturnObject 方法???
【问题讨论】:
-
您必须传入一个 DbSet 来获取上下文,此时您可以查询该 dbset,您是在复制示例吗?您可以使用 using(var context = new passContext()) 创建新上下文,也可以使用 AutoFac、Unity 等 IoC 容器,这是最佳实践
-
@Maria Pithia 为什么要通过它?这个方法会用这个做什么?是否要过滤此 DbSet 中的数据?
-
@MairajAhmad:我想按 ID 从我的桌面获取数据。
-
这里可以直接获取数据。但是如果你想从这里返回数据,你不需要传递它,你可以直接从那个方法返回数据。请在您的问题中添加 ReturnObject 的代码。
-
@PaulMcCowat:先生,我已经用这个 using(var context = new passContext()) 更新了我的楼层表中的两个字段和一些值 amd 只是为了获取记录并没有给我新更新的值field.the value of that two new updated fields are always come 0 when fetching records 这就是为什么我会这样
标签: asp.net-mvc entity-framework ef-code-first code-first dbset