У меня есть этот столбец и enum: < /p>
public class MagicLinkToken : BaseEntity
{
public required string EmailAddress { get; set; }
public required string TokenHash { get; set; }
public required string IpAddress { get; set; }
public MagicLinkTokenStatus Status { get; set; } = MagicLinkTokenStatus.Active;
public required DateTime ExpiresAt { get; set; }
// signup
public string? FirstName { get; set; }
public string? LastName { get; set; }
}
public enum MagicLinkTokenStatus
{
Active, // Token is valid and ready to be used
Used, // Token has been successfully used for login/signup
Expired, // Token expired before being used
Revoked, // Token was manually invalidated (e.g., user requested a new link)
}
Я хочу добавить уникальное ограничение на tokenhash , но только тогда, когда статус является «активным». В базе данных данные в статусе сохраняются как строковое представление enum. Итак, я добавил это в свой контекст DB: < /p>
protected override void OnModelCreating(ModelBuilder builder)
{
base.OnModelCreating(builder);
builder.Entity().Property(e => e.Status).HasConversion();
builder.Entity().HasIndex(t => t.TokenHash).IsUnique().HasFilter("\"Status\" = 'Active'");
}
Я написал тест для проверки этого фильтра, создав две сущности MagicLinkToken с одинаковым TokenHash и Status установить для «Active». Не было никакого исключения. Разве невозможно использовать HASFILTER в столбце с использованием преобразователя значений? Вот сгенерированная миграция: < /p>
using Microsoft.EntityFrameworkCore.Migrations;
#nullable disable
namespace FindSportsApi.Data.Migrations
{
///
public partial class MagicLinkTokenUniqueConstraint : Migration
{
///
protected override void Up(MigrationBuilder migrationBuilder)
{
migrationBuilder.CreateIndex(
name: "IX_MagicLinkTokens_TokenHash",
table: "MagicLinkTokens",
column: "TokenHash",
unique: true,
filter: "\"Status\" = 'Active'"
);
}
///
protected override void Down(MigrationBuilder migrationBuilder)
{
migrationBuilder.DropIndex(name: "IX_MagicLinkTokens_TokenHash", table: "MagicLinkTokens");
}
}
}
Подробнее здесь: https://stackoverflow.com/questions/797 ... econverter
Использование hasfilter на столбце с ValueConverter ⇐ C#
Место общения программистов C#
-
Anonymous
1758039424
Anonymous
У меня есть этот столбец и enum: < /p>
public class MagicLinkToken : BaseEntity
{
public required string EmailAddress { get; set; }
public required string TokenHash { get; set; }
public required string IpAddress { get; set; }
public MagicLinkTokenStatus Status { get; set; } = MagicLinkTokenStatus.Active;
public required DateTime ExpiresAt { get; set; }
// signup
public string? FirstName { get; set; }
public string? LastName { get; set; }
}
public enum MagicLinkTokenStatus
{
Active, // Token is valid and ready to be used
Used, // Token has been successfully used for login/signup
Expired, // Token expired before being used
Revoked, // Token was manually invalidated (e.g., user requested a new link)
}
Я хочу добавить уникальное ограничение на tokenhash , но только тогда, когда статус является «активным». В базе данных данные в статусе сохраняются как строковое представление enum. Итак, я добавил это в свой контекст DB: < /p>
protected override void OnModelCreating(ModelBuilder builder)
{
base.OnModelCreating(builder);
builder.Entity().Property(e => e.Status).HasConversion();
builder.Entity().HasIndex(t => t.TokenHash).IsUnique().HasFilter("\"Status\" = 'Active'");
}
Я написал тест для проверки этого фильтра, создав две сущности MagicLinkToken с одинаковым TokenHash и Status установить для «Active». Не было никакого исключения. Разве невозможно использовать HASFILTER в столбце с использованием преобразователя значений? Вот сгенерированная миграция: < /p>
using Microsoft.EntityFrameworkCore.Migrations;
#nullable disable
namespace FindSportsApi.Data.Migrations
{
///
public partial class MagicLinkTokenUniqueConstraint : Migration
{
///
protected override void Up(MigrationBuilder migrationBuilder)
{
migrationBuilder.CreateIndex(
name: "IX_MagicLinkTokens_TokenHash",
table: "MagicLinkTokens",
column: "TokenHash",
unique: true,
filter: "\"Status\" = 'Active'"
);
}
///
protected override void Down(MigrationBuilder migrationBuilder)
{
migrationBuilder.DropIndex(name: "IX_MagicLinkTokens_TokenHash", table: "MagicLinkTokens");
}
}
}
Подробнее здесь: [url]https://stackoverflow.com/questions/79766463/using-hasfilter-on-a-column-with-a-valueconverter[/url]
Ответить
1 сообщение
• Страница 1 из 1
Перейти
- Кемерово-IT
- ↳ Javascript
- ↳ C#
- ↳ JAVA
- ↳ Elasticsearch aggregation
- ↳ Python
- ↳ Php
- ↳ Android
- ↳ Html
- ↳ Jquery
- ↳ C++
- ↳ IOS
- ↳ CSS
- ↳ Excel
- ↳ Linux
- ↳ Apache
- ↳ MySql
- Детский мир
- Для души
- ↳ Музыкальные инструменты даром
- ↳ Печатная продукция даром
- Внешняя красота и здоровье
- ↳ Одежда и обувь для взрослых даром
- ↳ Товары для здоровья
- ↳ Физкультура и спорт
- Техника - даром!
- ↳ Автомобилистам
- ↳ Компьютерная техника
- ↳ Плиты: газовые и электрические
- ↳ Холодильники
- ↳ Стиральные машины
- ↳ Телевизоры
- ↳ Телефоны, смартфоны, плашеты
- ↳ Швейные машинки
- ↳ Прочая электроника и техника
- ↳ Фототехника
- Ремонт и интерьер
- ↳ Стройматериалы, инструмент
- ↳ Мебель и предметы интерьера даром
- ↳ Cантехника
- Другие темы
- ↳ Разное даром
- ↳ Давай меняться!
- ↳ Отдам\возьму за копеечку
- ↳ Работа и подработка в Кемерове
- ↳ Давай с тобой поговорим...
Мобильная версия