c#mvc 4 EF 5从dbcontext获取dbset而不知道表名

时间:2012-11-13 13:54:35

标签: asp.net-mvc asp.net-mvc-4 entity-framework-5

我有一个Users实体集和一个Administrators实体集。我想从DBContext获取可以是IEnumerable<Users>IEnumerable<Administrators>的项目列表

我希望能够做到

Type dbContextType = db.GetType();

Type tableType = dbContextType.GetProperty("users", 
    BindingFlags.IgnoreCase | BindingFlags.Public | BindingFlags.Instance
).PropertyType;

var items = db.Database.SqlQuery(tableType , "SELECT * FROM users");

问题是tableType是DbSet的类型,我需要一个Users

类型

1 个答案:

答案 0 :(得分:0)

比我想象的更简单

Type typeDB = Type.GetType("Models.User");

var items = db.Database.SqlQuery(typeDB, "SELECT * FROM users WHERE IdUser = '"+id+"'");

项目现在是System.Data.Entity.Internal.InternalSqlQuery女巫有一个带有我们对象的枚举器。问题是我们无法将此对象发送到强类型视图。

因此我们必须强制转换它。如果我们不知道要将它强制转换为类,那么我们可以将它转换为对象类型。我们要发送给它的视图将对强类型对象进行特定的转换。

return View("Users", items.Cast< object >().ElementAt(0));

现在我们有一个控制器可以用于多个强类型视图。