如何使用实体框架执行SQL查询

问题描述 投票:0回答:1

我正在寻找使用实体框架在数据库中执行查询的替代方案,我想知道是否可以使用 EF 直接从应用程序触发查询,而不是使用触发 DbSet 的传统方法,是否有任何方法方式?

c# .net entity-framework entity-framework-core
1个回答
0
投票

经过一番研究,我找到了一种使用实体框架进行查询的方法,这是一个例子:

例如,假设您要执行此查询:

SELECT COUNT(*) AS [Total] FROM [Users]

您需要一个与此查询结果匹配的类,对于本例,它可能是此类:

public class UserCount
{
    public int Total { get; set; }
}

创建类后,您还需要将其添加到 DbSet 中:

public DbSet<UserCount> UsersCount { get; set; }

但为了能够将它与您想要的查询一起使用,您需要在 DbContext 的 OnModelCreating 方法中配置它:

protected override void OnModelCreating(ModelBuilder modelBuilder)
{
    modelBuilder.Entity<UserCount>(x =>
    {
         x.ToSqlQuery("SELECT COUNT(*) AS [Total] FROM [Users]");
    });
}

课程最后应该是这样的:

public class DataContext : DbContext
    {
        public DbSet<UserCount> UsersCount { get; set; }

        protected override void OnConfiguring(DbContextOptionsBuilder options)
            => options.UseSqlServer("yourConnectionString");

        protected override void OnModelCreating(ModelBuilder modelBuilder)
        {
            modelBuilder.Entity<UserCount>(x =>
            {
                x.ToSqlQuery("SELECT COUNT(*) AS [Total] FROM [Users]");
            });
        }
    }

这样,当你触发你创建的DbSet时,它就会执行查询,例如:

class Program
{
    static void Main(string[] args)
    {
        using var context = new DataContext();
        var usersCount = context.UsersCount.First();
        Console.WriteLine(usersCount.Total);
    }
}
© www.soinside.com 2019 - 2024. All rights reserved.