Wie kann ich den Wert einer Schatteneigenschaft beim Einfügen in EF Core auf den Wert einer anderen Eigenschaft setzen?
Posted: 03 Jan 2025, 10:14
Wie kann ich den Wert einer Schatteneigenschaft beim ersten Einfügen auf den Wert einer anderen Eigenschaft setzen?
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 (), ich möchte, dass es beim Einfügen mit dem vom Benutzer bereitgestellten UpdatedAt-Wert übereinstimmt.
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.
https://learn.microsoft.com/en-us/ef/co ... ed-columns
Benachrichtigungsentität:
IEntityTypeConfiguration:
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()");
...
}