如何通过EF 4.1中的dbcontext实体进行操作?

时间:2011-06-13 15:38:12

标签: entity-framework asp.net-mvc-3 objectcontext objectstatemanager dbcontext

我正在使用ASP.NET Entity Framework 4.1 MVC 3(C#)

我想通过DbContext中的所有实体进行操作。我需要能够动态地引用我的实体才能制作动态视图。

我读过Lerman的书,两本MVC(2& 3)书籍,msdn,asp.net等等。也许我只是缺少一些东西?

您似乎可能必须使用ObjectContext才能访问实体。如果这是正确的方法,我肯定无法弄清楚如何做到这一点。请帮忙。谢谢。

3 个答案:

答案 0 :(得分:3)

你也可以这样做(例如):

foreach (var dbItem in dbContext.Items)
{
    //do what you want inside the loop with the dbItem
    sList.Add(new SelectListItem() {Text = dbItem.ItemName, Value = dbItem.ItemTag});
}

答案 1 :(得分:0)

我不确定你在问什么。如果要在DbContext中动态引用DbSets,可以使用反射:

DatabaseContext context = new DatabaseContext();
var contextObject = context as Object;
var contextType = contextObject.GetType();
var properties = contextType.GetProperties();
String result = String.Empty;
foreach (var property in properties)
{
  result += property.Name + "\n"
{

但说实话,我不知道你在问什么或者你想要什么。我刚看到你还没有答案,所以我想我会给我两分钱。

答案 2 :(得分:0)

使用Entity Sql和对CreateQuery的调用来形成查询。

看看这是否能让你入门。

http://www.codeproject.com/Questions/208209/Problem-with-Entity-SQL?display=Print

ObjectQuery query = ctx.CreateQuery("SELECT P FROM WebStoreEntities.Customers AS P");

我不是100%确定如何获取实体的名称 - 尝试使用OpticalDelusions方式 - 但这可能对您有所帮助。

你必须动态地把所有东西放在一起 - 但是结果类型你可能会遇到问题,但试一试。