Как преобразовать следующий запрос из SQL (Oracle) в Linq к сущности:Как преобразовать этот запрос из SQL в LINQ-к-субъектов
select * FROM ActivityPromptText where ActivityId = 8
and ProcessTypeId = 1 and ProcessId is null
Когда я пишу это в C#, его возвращение null
, в то время как тот же запрос возвращает результат в sql. Запрос Linq является:
var text2 = this.context.ActivityPromptText
.Where(pt => (pt.ActivityId == activityId && pt.ProcessTypeId == processType)
&& pt.ProcessId == null)
.Include(pt => pt.Prompt).FirstOrDefault();
=======================
модели являются:
[Table("ActivityPromptText")]
public class ActivityPromptText
{
[Key]
[DatabaseGenerated(DatabaseGeneratedOption.None)]
[Column(Order = 1)]
public int PromptTextId { get; set; }
[Key]
[DatabaseGenerated(DatabaseGeneratedOption.None)]
[Column(Order = 2)]
public int ActivityId { get; set; }
[Key]
[DatabaseGenerated(DatabaseGeneratedOption.None)]
[Column(Order = 3)]
public int ProcessTypeId { get; set; }
[Key]
[DatabaseGenerated(DatabaseGeneratedOption.None)]
[Column(Order = 4)]
public int? ProcessId { get; set; }
[ForeignKey("PromptTextId")]
public virtual PromptText MbopPrompt { get; set; }
}
и:
[Table("PromptText")]
public class PromptText
{
[Key]
[DatabaseGenerated(DatabaseGeneratedOption.None)]
public int PromptTextId { get; set; }
public string PromptText { get; set; }
}
и Файл DBContext имеет:
public virtual DbSet ActivityPromptTexts {get; задавать; }
общедоступный виртуальный DbSet PromptTexts {get; задавать; }
Вы пробовали что-нибудь? –
Пробовал это: var text2 = this.context.ActivityPromptText .Where (pt => pt.ActivityId == activityId && pt.ProcessTypeId == processType && pt.ProcessId == null) .Include (pt => pt.Prompt). FirstOrDefault(); – shivani
Хорошо, почему у вас есть круглые скобки в Where where? Между 'ProcessTypeId' и' ProcessId'? Он правильно меняет запрос? Измените его следующим образом: - '.Where (pt => pt.ActivityId == activityId && pt.ProcessTypeId == processType && pt.ProcessId == null)' –