Ich möchte den Zeitpunkt aufzeichnen, zu dem eine Entität mit CreatedAt eingefügt wurde Shadow-Eigenschaft, die als solche erstellt wird, da sie für den Benutzer undurchsichtig sein sollte.
Während ich es konfiguriere, würde ein Standardwert (
Code: Select all
HasDefaultValueSql("GETUTCDATE()")
Außerdem ist es möglich, es dort schreibgeschützt zu haben, also dass es nicht möglich ist, seinen Wert z. B. zu ändern. EF.Property(x, "CreatedAt") = DateTime.UtcNow?
Ich habe die gespeicherte Version von HasComputedColumnSql in Betracht gezogen, aber es wäre erforderlich ein bedingter SQL-Operator wie [CreatedAt] ? [CreatedAt]: [UpdatedAt], was meiner Meinung nach nicht existiert.
Code: Select all
modelBuilder.Entity
()
.Property(p => p.NameLength)
.HasComputedColumnSql("LEN([LastName]) + LEN([FirstName])", stored: true);
Benachrichtigungsentität:
Code: Select all
public sealed record Notification(
AssetType AssetType,
Guid AssetId,
AssetIssue AssetIssue,
Guid OwnerId,
string DisplayName,
string? GivenName,
string? Surname,
string UserPrincipalName)
{
public required NotificationStatus Status { get; set; }
public required int NotificationCount { get; set; }
public required DateTime UpdatedAt { get; set; }
}
Code: Select all
public void Configure(Microsoft.EntityFrameworkCore.Metadata.Builders.EntityTypeBuilder builder)
{
// Properties
...
builder.Property(p => p.UpdatedAt).HasDefaultValueSql("GETUTCDATE()");
// Shadow Properties
builder.Property("CreatedAt").HasDefaultValueSql("GETUTCDATE()");
...
}