0
我想要進行基本統計,以獲得表或實體的數據計數,並且我在詢問是否可以在實體框架中的一個查詢中執行此操作?我可以通過在存儲過程中使用多於select語句來在SQL查詢中執行此操作。在實體框架中選擇的不是非相關實體
我想要進行基本統計,以獲得表或實體的數據計數,並且我在詢問是否可以在實體框架中的一個查詢中執行此操作?我可以通過在存儲過程中使用多於select語句來在SQL查詢中執行此操作。在實體框架中選擇的不是非相關實體
這裏是我的方法,如何做到這一點,最後還是應該構造SQL Select語句,但仍然如此。
首先,你應該增加namespases:
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]);
}