C# 从EF模型中的所有表中获取10行

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

我从以下地方找到此样本:

有没有一种不使用Sql字符串就获得10行的方法

例如,与此类似的内容(它获取表关联,我在10(N)行表数据之后,而不是表关联):


从数据库获取数据时,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()
)似乎是一种复杂的方式。)