{
"title": "string",
"content": "string",
"userId": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
"categories": [
"3fa85f64-5717-4562-b3fc-2c963f66afa6"
]
}
< /code>
Beim Hinzufügen eines Datensatzes nach Abschluss aller Schritte im Repository wird zum Zeitpunkt des Aufrufens der Addasync -Methode eine zufällige ID für Kategorien generiert. Tatsächlich erstellen Sie eine neue Kategorie -Entität mit einer zufälligen ID und einem leeren Namen und es wird der Datenbank hinzugefügt. поста] [1]] [1] < /p>
upd: Ich werde hinzufügen, dass die Kategorie -ID, die ich in der Anforderung übergibt, in der Datenbank vorliegt. Vielen Dank für Ihre Hilfe
Code: < /p>
///
/// DTO of adding a post.
///
/// Заголовок.
/// Контент.
/// Id автора поста.
/// Список категорий поста в виде .
public record AddPostRequest(string Title, string Content, Guid UserId, List Categories);
///
/// Добавление поста.
///
/// Данные поста.
/// .
/// .
private static async Task AddPost(AddPostRequest request,
IPostRepository repository, CancellationToken cancellationToken)
{
var post = request.ToModel();
await repository.Create(post, cancellationToken);
return Results.Ok(new Response(StatusCodes.Status200OK, String.Empty));
}
public static Post ToModel(this AddPostRequest request)
{
var postId = Guid.NewGuid();
var post = new Post()
{
Id = postId,
Title = request.Title,
UserId = request.UserId,
Content = request.Content,
PostCategories = request.Categories.Select(id => new PostCategory()
{
PostId = postId,
CategoryId = id
}).ToList(),
CreatedOn = DateTime.UtcNow,
ModifiedOn = DateTime.UtcNow
};
return post;
}
public async Task Create(Post entity, CancellationToken cancellationToken)
{
if (!entity.PostCategories.Any())
{
Result.Failed($"{nameof(entity.PostCategories)} не может быть пустым.", ResultType.BadRequest);
}
try
{
await context.Database.BeginTransactionAsync(cancellationToken);
await context.Posts.AddAsync(entity, cancellationToken); // тут у категорий почему-то создается новый ID
await context.SaveChangesAsync(cancellationToken);
await context.Database.CommitTransactionAsync(cancellationToken);
return Result.Success(entity);
}
catch (Exception exception)
{
await context.Database.RollbackTransactionAsync(cancellationToken);
throw;
}
}
private static IServiceCollection AddDatabase(this IServiceCollection serviceCollection, string connectionString)
{
serviceCollection.AddNpgsql(connectionString, builder =>
{
builder.EnableRetryOnFailure(DatabaseConfig.RetryOnFailure,
TimeSpan.FromSeconds(30), null).ExecutionStrategy(dependencies => new NpgsqlExecutionStrategy(dependencies));
} );
return serviceCollection;
}
public class CategoryConfiguration : IEntityTypeConfiguration
{
public void Configure(EntityTypeBuilder builder)
{
builder.ToTable("Category");
builder.HasKey(x => x.Id);
builder.Property(x => x.Id).IsRequired();
builder.Property(x => x.Name).IsRequired();
}
}
public class PostCategoryConfiguration : IEntityTypeConfiguration
{
public void Configure(EntityTypeBuilder builder)
{
builder.ToTable("PostCategoryMap");
builder.HasKey(x => new { x.CategoryId, x.PostId });
builder.Property(x => x.CategoryId);
builder.HasOne(x => x.Post)
.WithMany(x => x.PostCategories)
.HasForeignKey(x => x.PostId);
builder.HasOne(x => x.Category)
.WithMany(x => x.PostCategories)
.HasForeignKey(x => x.CategoryId);
}
}
public class PostConfiguration : IEntityTypeConfiguration
{
public void Configure(EntityTypeBuilder builder)
{
builder.ToTable("Post");
builder.HasKey(x=> x.Id);
builder.HasIndex(x => x.Id).IsUnique();
builder.Property(x => x.Id).IsRequired();
builder.Property(x => x.Title).IsRequired();
builder.Property(x => x.Content).IsRequired();
builder.Property(x => x.CreatedOn).IsRequired();
}
}
Die Essenz des Problems: Ich sende eine Anfrage über Swagger mit den folgenden Daten < /p> [code] { "title": "string", "content": "string", "userId": "3fa85f64-5717-4562-b3fc-2c963f66afa6", "categories": [ "3fa85f64-5717-4562-b3fc-2c963f66afa6" ] } < /code> Beim Hinzufügen eines Datensatzes nach Abschluss aller Schritte im Repository wird zum Zeitpunkt des Aufrufens der Addasync -Methode eine zufällige ID für Kategorien generiert. Tatsächlich erstellen Sie eine neue Kategorie -Entität mit einer zufälligen ID und einem leeren Namen und es wird der Datenbank hinzugefügt. поста] [1]] [1] < /p> upd: Ich werde hinzufügen, dass die Kategorie -ID, die ich in der Anforderung übergibt, in der Datenbank vorliegt. Vielen Dank für Ihre Hilfe Code: < /p> /// /// DTO of adding a post. /// /// Заголовок. /// Контент. /// Id автора поста. /// Список категорий поста в виде . public record AddPostRequest(string Title, string Content, Guid UserId, List Categories);
/// /// Добавление поста. /// /// Данные поста. /// . /// . private static async Task AddPost(AddPostRequest request, IPostRepository repository, CancellationToken cancellationToken) { var post = request.ToModel();
public static Post ToModel(this AddPostRequest request) { var postId = Guid.NewGuid();
var post = new Post() { Id = postId, Title = request.Title, UserId = request.UserId, Content = request.Content, PostCategories = request.Categories.Select(id => new PostCategory() { PostId = postId, CategoryId = id }).ToList(), CreatedOn = DateTime.UtcNow, ModifiedOn = DateTime.UtcNow };
return post; }
public async Task Create(Post entity, CancellationToken cancellationToken) { if (!entity.PostCategories.Any()) { Result.Failed($"{nameof(entity.PostCategories)} не может быть пустым.", ResultType.BadRequest); }
try { await context.Database.BeginTransactionAsync(cancellationToken); await context.Posts.AddAsync(entity, cancellationToken); // тут у категорий почему-то создается новый ID
Ich wechsle von einem anderen Entwicklungsstapel zu Java/Spring und bin sehr verwirrt darüber, wie in Spring einige Dinge erledigt werden.
Eines der Probleme ist die magische Konvertierung von...
Ich habe ein Vision Transformer (ViT)-Modell zur Klassifizierung trainiert und das Modell mit dem folgenden PyTorch-Code gespeichert:
torch.save(model, vit_model.pth )
Beim Versuch, das...
Ich lerne Dask, um meine Python-Projekte effizienter und skalierbarer zu machen. Um die Leistung besser zu verstehen, habe ich ein Skript geschrieben, das die Rechenzeit von Pandas und Dask bei der...
Ich möchte eine Spalte in SQL Server aktualisieren, indem ich ihren ursprünglichen Wert behalte und einen neuen Wert durch Komma getrennt anhänge. Dies kann folgendermaßen erfolgen:
string sql =...
Ich arbeite an einer Java-Anwendung, bei der ich einen großen Datensatz aus aus der Datenbank abgerufenen Zeilen verarbeiten muss. Hier ist die Beispielsituation:
class Example {
@Autowired
private...