Asp.net mvc 在实体框架中选择多个非相关实体
我想做一些基本的统计,以获取表或实体中的数据计数,我想问的是,我是否可以在实体框架中的一个查询中做到这一点?在SQL查询中,我可以通过在存储过程中生成多个select语句来实现这一点。下面是我的方法,最后您仍然应该构造SQL select语句,但仍然需要 首先,您应该添加namespase: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.
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]);
}