我正在使用带有 Entity Framework Core 的 ASP.net MVC 核心创建一个 Web API。我正在使用 NSwag 来使用 swagger 文档和 Swagger UI,我正在测试 Post 方法并且它们有效,但 get 返回空或 null。
在这里可以看到数据库中的数据
获取表的所有数据的代码是这样的:
// GET: api/UserRoles
[HttpGet]
public IEnumerable<UserRole> GetUserRoles()
{
return _context.UserRoles.ToList();
}
但即使数据库中有数据,它也返回 null,并且所有其他查询返回 null 或空(或在以下情况下抛出异常.First()
这是我的OnModelCreating
protected override void OnModelCreating(ModelBuilder modelBuilder)
{
base.OnModelCreating(modelBuilder);
//Debugger.Launch();
modelBuilder.Entity<Category>().HasOne(x => x.ParentCategory).WithMany(x => x.SubCategories).HasForeignKey(x => x.ParentCategoryId);
foreach (var entity in modelBuilder.Model.GetEntityTypes())
{
var type = entity.ClrType.GetInterface(nameof(Interfaces.IDto));
if (type == null) continue;
modelBuilder.Entity(entity.ClrType).Property<DateTime?>("DeletedAt");
modelBuilder.Entity(entity.ClrType)
.Property<DateTime>("LastUpdated")
.HasComputedColumnSql("SYSUTCDATETIME()");
modelBuilder.Entity(entity.ClrType)
.Property<DateTime>("CreatedAt").HasDefaultValueSql("SYSUTCDATETIME()"); ;
modelBuilder.Entity(entity.ClrType)
.HasKey(nameof(Interfaces.IDto.Id)).ForSqlServerIsClustered(false);
modelBuilder.Entity(entity.ClrType)
.HasIndex("CreatedAt").ForSqlServerIsClustered();
var parameter = Expression.Parameter(entity.ClrType, "e");
var body = Expression.NotEqual(
Expression.Call(typeof(EF), nameof(EF.Property), new[] { typeof(DateTime?) }, parameter, Expression.Constant("DeletedAt")),
Expression.Constant(null));
modelBuilder.Entity(entity.ClrType).HasQueryFilter(Expression.Lambda(body, parameter));
}
modelBuilder.Entity<Customer>().HasIndex(x => x.Identification).IsUnique();
}
幕布斯6054654
慕码人2483693
相关分类