Ich verwende eine T4-Vorlage leicht von der in this vorgeschlagenen Antwort geändert, um Typoskript-Schnittstellen von meinem EF POCOs zu generieren.Get Standard-SQL-Wert von Entity Framework-Klasse
Die EF Core POCOs wurden zuerst als Datenbank generiert und einige der Datenbankspalten haben Standardwerte. Diese werden korrekt durch den EF-Generator in meinen Zusammenhang abgebildet, z. .HasDefaultValueSql("0")
;
Ich bin ein wenig verwirrt darüber, wie man auf den Standardwert für eine bestimmte EF-Klasse zugreifen, ich dachte, GetValueOrDefault
könnte den Trick tun, aber das ist nur den Standardwert für den .net-Typ geben.
Ich sehe, es gibt einige andere Lösungen da draußen für die Arbeit, aber ich kann nicht scheinen, eine, die noch funktioniert mit ASP .Net Core.
Idealerweise würde ich gerne wissen, wie man bestimmt, ob eine Eigenschaft einen Standard-EF-Wert von MemberInfo hat, da die folgende Zeile aus der T4-Vorlage die Eigenschaftsbeschreibungen erzeugt, die am einfachsten zu ändern wäre Standardwert für das TypeScript def.
foreach (MemberInfo mi in GetInterfaceMembers(t))
{
sb.AppendFormat(" {0}: {1};\n", mi.Name, GetTypeName(mi));
}
Es wäre viel einfacher, wenn Sie den Standardwert mit einem Datum Annotation Attribute gesetzt werden stattdessen. Etwas wie '[DefaultValue (" 0 ")]'. Sie können dann einfach mit 'MemberInfo.CustomAttributes' darauf zugreifen. – haim770
Haben Sie Zugriff auf die Quelle' DbContext' in der Vorlage? –
@ haim770 Ich erzeuge die Klassen aus einer Datenbank, die bereits existiert, ich besitze nicht die db und wenn es sich ändert, möchte ich in der Lage sein zu regenerieren, ohne die Standards manuell zu überprüfen –