C# 从EF模型中的所有表中获取10行
我从以下地方找到此样本: 有没有一种不使用Sql字符串就获得10行的方法 例如,与此类似的内容(它获取表关联,我在10(N)行表数据之后,而不是表关联):C# 从EF模型中的所有表中获取10行,c#,entity-framework,linqpad,C#,Entity Framework,Linqpad,我从以下地方找到此样本: 有没有一种不使用Sql字符串就获得10行的方法 例如,与此类似的内容(它获取表关联,我在10(N)行表数据之后,而不是表关联): 从数据库获取数据时,EntityFramework返回IEnumerables。这意味着,除非通过它进行枚举(如get count、ToList()等,实际上是延迟加载),否则将不会从数据库中获取数据 这是一个例子 var database = new SomeDatabase(connectionString); var tableRows
从数据库获取数据时,EntityFramework返回IEnumerables。这意味着,除非通过它进行枚举(如get count、ToList()等,实际上是延迟加载),否则将不会从数据库中获取数据 这是一个例子
var database = new SomeDatabase(connectionString);
var tableRows = database.Context.SomeTableName;
var result = new List<SomeDataType>();
var count = 0;
foreach (var tableRow in tableRows)
{
result.Add(tableRow);
count++;
if (count == 10) break;
}
在本例中,仅从数据库中获取10条记录。
但如果你这样做
var tableRows = database.Context.SomeTableName.ToList();
您将从该表中获取整行(注意ToList()),当您从数据库获取数据时,EntityFramework将返回IEnumerables。这意味着,除非通过它进行枚举(如get count、ToList()等,实际上是延迟加载),否则将不会从数据库中获取数据 这是一个例子
var database = new SomeDatabase(connectionString);
var tableRows = database.Context.SomeTableName;
var result = new List<SomeDataType>();
var count = 0;
foreach (var tableRow in tableRows)
{
result.Add(tableRow);
count++;
if (count == 10) break;
}
在本例中,仅从数据库中获取10条记录。
但如果你这样做
var tableRows = database.Context.SomeTableName.ToList();
您将从该表中获取整行(注意ToList()),要执行此操作,您需要对类型调用
上下文。GetTable
:
from metaTable in context.Mapping.GetTables()
let table = (IQueryable<object>) context.GetTable (metaTable.RowType.Type)
select table.Take(10)
context.Mapping.GetTables()中的元表中的)
let table=(IQueryable)context.GetTable(metaTable.RowType.Type)
选择表格。取(10)
请记住,您的示例与LINQ to SQL相关,而不是与EF相关(如标题所示)。要做到这一点,您需要调用
上下文。GetTable
类型:
from metaTable in context.Mapping.GetTables()
let table = (IQueryable<object>) context.GetTable (metaTable.RowType.Type)
select table.Take(10)
context.Mapping.GetTables()中的元表中的)
let table=(IQueryable)context.GetTable(metaTable.RowType.Type)
选择表格。取(10)
请记住,您的示例与LINQ to SQL相关,而不是与EF相关(如标题所示)。我认为这没有抓住要点,因为它要求您在编译时知道表名。(这似乎是编写
var result=database.Context.SomeTableName.Take(10).ToList()
)的一种复杂方式)我认为这没有抓住要点,因为它要求您在编译时知道表名。(编写var result=database.Context.SomeTableName.Take(10.ToList()
)似乎是一种复杂的方式。)