Ich habe Code, der stark von ISO Kalenderwochen abhängt; seine Persistenz-Schicht 6.Mapping SQL-Funktionen in Entity Framework mit konstanten Parametern
In C#, um die Entity Framework erfolgt über habe ich eine Erweiterungsmethode zu Datetime hinzugefügt:
// From https://stackoverflow.com/a/11155102/112964
public static int IsoWeek(this DateTime self) {
var day = CultureInfo.InvariantCulture.Calendar.GetDayOfWeek(self);
if (day >= DayOfWeek.Monday && day <= DayOfWeek.Wednesday)
{
self = self.AddDays(3);
}
// Return the week of our adjusted day
return CultureInfo.InvariantCulture.Calendar.GetWeekOfYear(self, CalendarWeekRule.FirstFourDayWeek, DayOfWeek.Monday);
}
Ich möchte für diese Erweiterung Methode als auch in IQueryable
s arbeiten, und Ordnen Sie es der SQL Server-Funktion DATEPART(iso_week, self)
zu.
Das bedeutet, dass ich DATEPART
mit einem ersten Parameter aufrufen möchte, der immer'iso_week'
ist. Der zweite Parameter sollte DateTime
in der C# -Methode übergeben werden. Soweit ich weiß, funktioniert DbFunctionAttribute
nur, wenn beide Parameter Parameter der Funktion sind.
Ist es möglich, eine solche Zuordnung durchzuführen, oder muss ich eine gespeicherte Prozedur erstellen, die DATEPART(iso_week, @param)
aufruft und diese Prozedur aufrufen?
nicht sicher, ich verstehe den Teil über den konstanten Parameter. Könnte das helfen? https://StackOverflow.com/a/29539227/1236044 – jbl
@Jbl Die Antwort, die Sie verknüpften, ist, wie Sie das 'DbFunctionAttribute' mit einer Funktion verwenden, in der alle Argumente in SQL übergeben werden. Ich sehe nicht, dass es der SQL-Funktion einen festen Parameter hinzugefügt hat, so wie ich es möchte. –