【问题标题】:Is there any way to use order by clause in the table inside OnModelCreating in .net core有没有办法在.net核心的OnModelCreating里面的表中使用order by子句
【发布时间】:2021-01-27 02:14:03
【问题描述】:

我想在下面的代码中使用 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());
        }

【问题讨论】:

  • 为什么在创建模型时需要这样做?
  • @ChetanRanpariya,如果我在这里这样做有什么问题。我正在考虑添加builder.Property(v =&gt; v.StartDateTime).,但不确定如何实现。

标签: asp.net-core-2.0


【解决方案1】:

重写 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

Fluent API Configuration

我想在下面的代码中使用 order by 子句。模型和 视图中有 StartDatetime 字段。所以顺序应该使用 代码中的 startDatetime desc。

根据您的描述,我假设您可能想使用 Fluent API 设置默认顺序。在 EF 6 中,使用 Fluent API 时有一个HasColumnOrder() method,但不幸的是,在 EF 核心中,似乎不支持此方法。

所以,我建议您可以在 Query 语句中使用 OrderByOrderByDescending 方法,而不是在 OnModelCreating 方法中。你可以参考这个教程:Tutorial: Add sorting, filtering, and paging - ASP.NET MVC with EF Core

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-11-28
    • 1970-01-01
    • 1970-01-01
    • 2020-08-15
    相关资源
    最近更新 更多