Я разрабатываю приложение с C#. NET Core 3.1 и EFCore. На основании этого документа я попытался добавить новый столбец и использовать Queryfilter.
protected override void OnModelCreating(ModelBuilder modelBuilder)
{
base.OnModelCreating(modelBuilder);
modelBuilder.ApplyConfiguration(new UserEntityTypeConfiguration());
....
//Other configurations
...
// Assures consistent naming and configuration of audit fields.
foreach (IMutableEntityType entityType in modelBuilder.Model.GetEntityTypes().Where(item => !item.IsOwned()))
{
//Settings related to softdelete
modelBuilder.Entity(entityType.Name).Property<bool>(nameof(DefaultColumnName.IsDeleted)).HasDefaultValue(false);
var IsDeletedProperty = entityType.FindProperty(nameof(DefaultColumnName.IsDeleted));
if (IsDeletedProperty != null && IsDeletedProperty.ClrType == typeof(bool))
{
var parameter = Expression.Parameter(entityType.ClrType, "p");
var prop = Expression.Property(parameter, IsDeletedProperty.PropertyInfo);
var filter = Expression.Lambda(Expression.Not(prop), parameter);
MutableEntityTypeExtensions.SetQueryFilter(entityType, filter);
}
}
Однако, когда я выполняю миграцию с dotnet ef migrations add Init
, появляется следующая ошибка, которая не может быть перенесена должным образом.
Value cannot be null. (Parameter 'property')
Согласно моему исследованию, эта ошибка возникает в этой строке, но я не знаю, как исправить проблему.
var prop = Expression.Property(parameter, IsDeletedProperty.PropertyInfo);
Может кто-нибудь сказать мне, как решить проблему