Wie kann ich den Wert einer Schatteneigenschaft beim Einfügen in EF Core auf den Wert einer anderen Eigenschaft setzen?C#

Ein Treffpunkt für C#-Programmierer
Guest
 Wie kann ich den Wert einer Schatteneigenschaft beim Einfügen in EF Core auf den Wert einer anderen Eigenschaft setzen?

Post by Guest »

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 (

Code: Select all

HasDefaultValueSql("GETUTCDATE()")
), 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.

Code: Select all

modelBuilder.Entity
()
.Property(p => p.NameLength)
.HasComputedColumnSql("LEN([LastName]) + LEN([FirstName])", stored: true);
https://learn.microsoft.com/en-us/ef/co ... ed-columns
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; }
}
IEntityTypeConfiguration:

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()");

...
}

Quick Reply

Change Text Case: 
   
  • Similar Topics
    Replies
    Views
    Last post