问题描述
我想在下面的代码中使用 order by 子句。模型和视图中有 StartDatetime 字段。所以 order by 应该在代码中使用 startDatetime desc 。 谁能指导我如何做到这一点?
protected override void OnModelCreating(ModelBuilder modelBuilder)
{
base.OnModelCreating(modelBuilder);
{
var builder = modelBuilder.Entity<TestBookingsView>().ToTable("vw_Testbooking");
SetKey(builder);
}
modelBuilder.ApplyConfigurationsFromAssembly(Assembly.GetExecutingAssembly());
}
解决方法
重写 OnModelCreating 方法以进一步配置根据约定从派生上下文的 DbSet 属性中公开的实体类型发现的模型。
在 OnModelCreating 方法中,我们可以使用 Fluent API 配置模型、实体和属性配置。示例代码如下:
public class SchoolDBContext: DbContext
{
public DbSet<Student> Students { get; set; }
protected override void OnModelCreating(ModelBuilder modelBuilder)
{
//Write Fluent API configurations here
//Property Configurations
modelBuilder.Entity<Student>()
.Property(s => s.StudentId)
.HasColumnName("Id")
.HasDefaultValue(0)
.IsRequired();
}
}
有关使用 Fluent API 的更多详细信息,请查看以下文章:
Fluent API in Entity Framework Core
我想在下面的代码中使用 order by 子句。模型和 视图中有 StartDatetime 字段。所以 order by 应该使用 代码中的 startDatetime 说明。
根据您的描述,我假设您可能想使用 Fluent API 设置默认顺序。在 EF 6 中,使用 Fluent API 时有一个 HasColumnOrder()
method,但不幸的是,在 EF core 中,似乎不支持此方法。
因此,我建议您可以在 Query 语句中使用 OrderBy 或 OrderByDescending 方法,而不是在 OnModelCreating 方法中。您可以参考本教程:Tutorial: Add sorting,filtering,and paging - ASP.NET MVC with EF Core