0

大家好,对不起我的英语不好!

我正在使用 Entity Framework Core 5 + Postgre +动态 linq 核心做一些测试

我的 DataContext 定义如下:

 public class Context: DbContext {

    public DbSet<Models.Anagrafica> Anagrafiche {get; set; }

    protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder)
    {
        optionsBuilder.UseNpgsql(@"Host=XYZ;Database=XYZ;Username=XYZ;Password=XYZ");
        base.OnConfiguring(optionsBuilder);
    }

    protected override void OnModelCreating(ModelBuilder modelBuilder)
    {
        modelBuilder.Entity<Models.Anagrafica>().ToTable("Anagrafiche");
        modelBuilder.Entity<Models.Anagrafica>().Property(p => p.Id)HasColumnName("id");
        modelBuilder.Entity<Models.Anagrafica>().Property(p => p.RagioneSociale).HasColumnName ("ragionesociale");
        modelBuilder.Entity<Models.Anagrafica>().Property(p => p.DataAttivazione).HasColumnName("dataattivazione");
        base.OnModelCreating (modelBuilder);
    }
}

实体 Anagrafica 定义如下:

public class Anagrafica {
    public int Id { get; set; }
    public string RagioneSociale { get; set; }
    public DateTime? DataAttivazione { get; set; }
}

问题:是否可以在 where 中使用 date_part 函数?

如果我运行代码

var data =  context.Anagrafiche.Where("date_part(\"week\", dataattivazione) = @0",1).ToList();

我收到错误消息

System.Linq.Dynamic.Core.Exceptions.ParseException:'Anagrafica' 类型中不存在适用的方法'date_part''

是否可以在 Dynamic Linq 中使用数据库函数和/或 UDF?如果有可能做到这一点,我错了吗?

谢谢!

4

0 回答 0