Я тестировал Blazor и обнаружил что-то странное, вероятно, что-то, что я сделал неправильно, но результат действительно странный. Это не виртуальная машина, это просто мой ноутбук (Macbook pro 16GB Ram) и контейнер 1 docker с sql server linux.
Я создал новый компонент под названием Buildertest с объектом в качестве параметра , если запустить проект, do tnet потребляет не менее 70 ГБ ОЗУ и много ЦП (это странная часть). Обычно visual studio переносит меня на главную страницу в chrome почти сразу, но не в этот раз. код, который я думаю, очень прост:
/ index.razor:
@page "/"
@using Loginnmodels2.Data
@inject IModalService Modal
<h1>Hello, world!</h1>
Welcome to your new app.
<buildertest generic_object="a" />
@code
{
private UserHasCases a = new UserHasCases();
}
Buildertest.cs:
using System;
using Microsoft.AspNetCore.Components.Rendering;
using Microsoft.AspNetCore.Components;
using System.Reflection;
namespace Loginnmodels2.Pages
{
public class buildertest : ComponentBase
{
[Parameter] public Loginnmodels2.Data.UserHasCases generic_object { get; set; }
private PropertyInfo[] Propiedades;
protected override void BuildRenderTree(RenderTreeBuilder builder)
{
base.BuildRenderTree(builder);
GetListOfProperties();
int counter = 0;
builder.OpenElement(++counter, "table");
builder.OpenElement(++counter, "tbody");
foreach (var item in Propiedades)
{
builder.OpenElement(++counter, "tr");
builder.OpenElement(++counter, "td");
builder.AddContent(++counter, item.Name);
builder.CloseElement();
builder.OpenElement(++counter, "td");
builder.OpenElement(++counter, "Input");
builder.CloseElement();
builder.CloseElement();
}
builder.CloseElement();
builder.CloseElement();
}
private void GetListOfProperties()
{
Propiedades = new PropertyInfo[5];
Propiedades = generic_object.GetType().GetProperties();
}
}
}
Конечно, я новичок в Blazor, но мой предположение состоит в том, что каким-то образом параметр класса buildertest что-то тормозит.
есть идеи?
я использую visual studio для ма c
заранее спасибо.
Скриншот монитора активности
Класс UserHasCases:
using System;
using System.ComponentModel.DataAnnotations.Schema;
using System.ComponentModel.DataAnnotations;
namespace Loginnmodels2.Data
{
public class UserHasCases
{
public User usr {get; set;}
public Case connected_case { get; set; }
public int Sequence { get; set; }
[Key] [DatabaseGenerated(DatabaseGeneratedOption.Identity)] public Int64 int_counter { get; set; }
}
}
это класс, который я создал как сервис
using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks;
//using System.Data.Entity;
using Loginnmodels2.Data;
using Microsoft.EntityFrameworkCore;
namespace Loginnmodels2.DataServices
{
public interface IUserDataService
{
Task<List<Data.User>> Get();
Task<Data.User> Get(string usr_name);
Task<Data.User> Add(Data.User a);
Task<List<Data.UserHasCases>> GetCases(User param_usr);
void Delete(Data.User a);
}
public class UserDataService : IUserDataService
{
dbcontext1 _context;
public UserDataService(dbcontext1 ctx)
{
_context = ctx;
}
public async Task<List<Data.User>> Get()
{
return await _context.Users.ToListAsync();
}
public async Task<Data.User> Get(string usr_name)
{
return await GetAllUsers().Where(x => x.user_name == usr_name).FirstOrDefaultAsync();
}
public async Task<Data.User> Add(Data.User a)
{
_context.Users.Add(a);
await _context.SaveChangesAsync();
return a;
}
public async void Delete(Data.User a)
{
_context.Users.Remove(a);
await _context.SaveChangesAsync();
}
public IQueryable<User> GetAllUsers()
{
return _context.Users.AsQueryable();
}
private IQueryable<UserHasCases> GetAllCases()
{
return _context.UserCaseRelation.AsQueryable();
}
public async Task<List<Data.UserHasCases>> GetCases(User param_usr)
{
return await GetAllCases().Where(x => x.usr == param_usr).ToListAsync();
}
public async Task<List<Data.UserHasCases>> GetAllValidCases()
{
return await GetAllCases().Where(x => x.connected_case.is_valid == true).ToListAsync();
}
}
}
это настройка в visual studio: настройка в vstudio