Filterung auf einer Objekt-/Gussspalte?C#

Ein Treffpunkt für C#-Programmierer
Anonymous
 Filterung auf einer Objekt-/Gussspalte?

Post by Anonymous »

In unserer SQL Server -Datenbank haben wir eine Tabelle mit diesem Layout: < /p>

Code: Select all

public partial class Measurement
{
public int Measurements_PK { get; set; }

public object? Value { get; set; }

public DateTime TimeStamp { get; set; }

public int TestRecord_FK_UQ { get; set; }

public String Name_UQ { get; set; }

public string DataType { get; set; } = null!;

public virtual TestRecord TestRecord_FK_UQNavigation { get; set; } = null!;
}
< /code>
bezieht sich auf diese Tabelle: < /p>
public partial class TestRecord
{
public int TestRecords_PK { get; set; }

public string? OperatorID { get; set; }

public string? CompanyName { get; set; }

public int Part_FK { get; set; }

public string? HardwareVersion { get; set; }

public string? FirmwareVersion { get; set; }

public string? FacilityName { get; set; }

public string? TesterType { get; set; }

public string? TesterID { get; set; }

public string? FixtureType { get; set; }

public string? FixtureID { get; set; }

public int? FixturePosition { get; set; }

public DateTime StartTime { get; set; }

public DateTime EndTime { get; set; }

public string? WorkOrderID { get; set; }

public string? CustomerName { get; set; }

public int TestPlan_FK { get; set; }

public string TestAppName { get; set; } = null!;

public string TestAppVersion { get; set; } = null!;

public string? Error { get; set; }

public byte enumResultState { get; set; }

public DateTime? entrydate { get; set; }

public virtual ICollection Measurements { get; set; } = new List();

public virtual Part Part_FKNavigation { get; set; } = null!;

public virtual TestPlan TestPlan_FKNavigation { get; set; } = null!;
}
< /code>
häufig werden wir eine Abfrage ausführen, die nach einer spezifischen Messung für einen bestimmten Datensatz oder eine Gruppe von Datensätzen suchen: < /p>
select *
from Measurement
where Name_UQ = 'someMeasurementName'
and TestRecord_FK_UQ = 11111
and Value = 12345
Als ich versucht habe, dies in EF -Kern zu tun, bin ich auf das Problem stoße, bei dem C# einen hochspezifischen Typ erwartet, und wenn ich versuche, in diesen Typ im C# -Code in diesen Typ zu werfen, wird der resultierende SQL, den EF -Core generiert, versucht, jeden Wert zu gießen anstelle von nur mit name_uq .Int32 dcuid = 12345;
from Measurement m in Context.Measurements
where m.Name_UQ == "DCUID"
select new
{
m.Name_UQ,
m.Value,
m.TimeStamp
})
.Where(a => (Int32)a.Value == dcuid)
.OrderByDescending(a => a.TimeStamp)
.Take(1)
.ToList();
< /code>
Wenn Sie dies von der TestRecord -Seite von der Seite von der Navigation von der Testrecord -Seite tun, können Sie das Gleiche so weit tun, wie ich es beurteilen kann. Dies ist mit VS22 17.13.6, Windows 11, C#, EF Core 9.0.4 gegen SQL Server 2019 15.0.4415.2 (x64).

Quick Reply

Change Text Case: 
   
  • Similar Topics
    Replies
    Views
    Last post