В моем DbContext.OnModelCreating у меня есть следующий код:
Код: Выделить всё
modelBuilder.Entity()
.HasAnnotation("TenantIsolationPolicy", new RlsPolicy(...));
Код: Выделить всё
RlsPolicyТогда у меня есть пользовательский ModelDiffer, который обрабатывает «бизнес-логику» чтения данных аннотаций и генерации SQL на их основе. Я могу собрать код, но получаю сообщение об ошибке при попытке добавить миграцию: невозможно создать литералы C# типа «XYZ.RlsPolicy». Поставщик должен реализовать CoreTypeMapping.GenerateCodeLiteral для поддержки его использования во время разработки.
На основе https://learn.microsoft.com/en-us/dotnet/api/ microsoft.entityframeworkcore.metadata.builders.indexbuilder-1.hasannotation?view=efcore-5.0 Я ожидал, что смогу передать класс в качестве второго параметра, а затем в другом параметре. Я использую такой код для безопасного доступа к данным:
Код: Выделить всё
var sourceTableAnnotation = entityType.GetAnnotations()?.FirstOrDefault(x => x.Name == "TenantIsolationPolicy");
if (sourceTableAnnotation != null &&
sourceTableAnnotation.Value is RlsPolicy sourcePayload)
{
...
}
Я предполагаю, что данные из метода OnConfiguring передаются в пользовательская модель отличается неправильно?
Подробнее здесь: https://stackoverflow.com/questions/792 ... annotation
Мобильная версия