Asp.net mvc 在实体框架中选择多个非相关实体

Asp.net mvc 在实体框架中选择多个非相关实体,asp.net-mvc,entity-framework,Asp.net Mvc,Entity Framework,我想做一些基本的统计,以获取表或实体中的数据计数,我想问的是,我是否可以在实体框架中的一个查询中做到这一点?在SQL查询中,我可以通过在存储过程中生成多个select语句来实现这一点。下面是我的方法,最后您仍然应该构造SQL select语句,但仍然需要 首先,您应该添加namespase: using System.Data.Entity.Core.Metadata.Edm; using System.Data.Entity.Infrastructure; using System.Data.

我想做一些基本的统计,以获取表或实体中的数据计数,我想问的是,我是否可以在实体框架中的一个查询中做到这一点?在SQL查询中,我可以通过在存储过程中生成多个select语句来实现这一点。下面是我的方法,最后您仍然应该构造SQL select语句,但仍然需要

首先,您应该添加namespase:

using System.Data.Entity.Core.Metadata.Edm;
using System.Data.Entity.Infrastructure;
using System.Data.Entity.Core.Objects;
然后,您可以使用此代码获取所有具有行计数的表

YourDBEntities ent = new YourDBEntities();
ObjectContext context = ((IObjectContextAdapter)ent).ObjectContext;
MetadataWorkspace metadataWorkspace = context.MetadataWorkspace;
EntityContainer container = metadataWorkspace
    .GetItems<EntityContainer>(DataSpace.CSpace).First();
ReadOnlyMetadataCollection<EntitySetBase> entitySetBase = container.BaseEntitySets;

//Get Table Names
var tableNames = entitySetBase
    .Where(x => x.BuiltInTypeKind == BuiltInTypeKind.EntitySet) //Get Tables Only
    .Select(x => x.Name);

//Get data
foreach (var tableName in tableNames)
{
    //Counstruct query for each table
    var selectSQL = String.Format(@"SELECT '{1}', COUNT(1) AS Count  
                                    FROM {0}", tableName, tableName);
    ObjectQuery<DbDataRecord> query = context.CreateQuery<DbDataRecord>(selectSQL);
    ObjectResult<DbDataRecord> results = query.Execute(MergeOption.AppendOnly);
    DbDataRecord res =  results.First();
    //Write to console
    Console.WriteLine("Table '{0}' contains {1} of rows", res[0], res[1]);
}