我正在尝试使用实体框架从数据库中选择所有行进行操作,然后再将它们发送到表单
var ptx = [modelname].[tablename]();
ptx.[tablename].Select(????)
里面有什么????
我正在尝试使用实体框架从数据库中选择所有行进行操作,然后再将它们发送到表单
var ptx = [modelname].[tablename]();
ptx.[tablename].Select(????)
里面有什么????
我使用了 entitydatasource,它提供了我想做的一切所需的一切。
_repository.[tablename].ToList();
实体框架有一件很漂亮的事情,比如:
var users = context.Users;
这将选择 Table 中的所有行User
,然后您可以使用您的.ToList()
等。
对于实体框架的新手来说,就像:
PortalEntities context = new PortalEntities();
var users = context.Users;
这将选择表中的所有行User
怎么样:
using (ModelName context = new ModelName())
{
var ptx = (from r in context.TableName select r);
}
ModelName 是设计者自动生成的类,继承自ObjectContext
.
您可以使用此代码选择所有行:
C# :
var allStudents = [modelname].[tablename].Select(x => x).ToList();
您可以简单地遍历 DbSet context.tablename
foreach(var row in context.tablename)
Console.WriteLn(row.field);
或立即评估到您自己的列表中
var allRows = context.tablename.ToList();
我知道旧帖子,但是使用Select(x => x)
可以将 EF Core(甚至只是 Linq)表达式拆分为查询构建器。
这对于添加动态条件很方便。
例如:
public async Task<User> GetUser(Guid userId, string userGroup, bool noTracking = false)
{
IQueryable<User> queryable = _context.Users.Select(x => x);
if(!string.IsNullOrEmpty(userGroup))
queryable = queryable.Where(x => x.UserGroup == userGroup);
if(noTracking)
queryable = queryable.AsNoTracking();
return await queryable.FirstOrDefaultAsync(x => x.userId == userId);
}
这里有几种方法(假设我正在为 DbConext 使用依赖注入)
public class Example
{
private readonly DbContext Context;
public Example(DbContext context)
{
Context = context;
}
public DbSetSampleOne[] DbSamples { get; set; }
public void ExampleMethod DoSomething()
{
// Example 1: This will select everything from the entity you want to select
DbSamples = Context.DbSetSampleOne.ToArray();
// Example 2: If you want to apply some filtering use the following example
DbSamples = Context.DbSetSampleOne.ToArray().Where(p => p.Field.Equals("some filter"))
}
您可以使用:
ptx.[tablename].Select( o => true)