Как настроить Blazor QuickGrid для распознавания полей в моем классе?C#

Место общения программистов C#
Ответить
Anonymous
 Как настроить Blazor QuickGrid для распознавания полей в моем классе?

Сообщение Anonymous »

Прежде всего, я новичок в Blazor, так что будьте со мной поосторожнее. Однако я уже много лет занимаюсь программированием на C#, ASP.NET и Winforms. Я беру старое приложение Winforms, C#, .NET и пытаюсь переписать его в .NET 9.0, C# и Blazor.
Я настроил свой класс, создал DbContext и добавил QuickGrid на свою страницу .razor. Я использовал эти руководства при создании страницы Blazor и подключении приложения к базе данных:
https://learn.microsoft.com/en-us/dotnet/aspire /database/sql-server-integrations
https://learn.microsoft.com/en-us/aspne ... ivots=vsНа моей странице Index.razor появляется ошибка

InboundOriginalFileName не существует в текущем context

в строке, где я определяю свойство для QuickGrid. Поле InboundOriginalFileName является частью класса EncounterValidationOutput и находится в результатах SQL для объекта списка experiencesValidationOutputs, который назначен свойству Items в QuickGrid. Я спросил на Copilot и получил только ответ, что мое поле должно быть определено в моем классе, и это так.
Почему QuickGrid не распознает это поле? Что я могу сделать, чтобы это исправить?
Index.razor:
@page "/encountervalidationoutputs"
@using Microsoft.EntityFrameworkCore
@using Microsoft.EntityFrameworkCore.Infrastructure
@using Microsoft.AspNetCore.Components.QuickGrid
@using EncounterBlazorApp.Models
@using EncounterBlazorApp.Data
@implements IAsyncDisposable
@inject IDbContextFactory DbFactory

Index

Index


Create New





@code {
private List encounterValidationOutputs = new();
private EncounterBlazorAppContext? context = null;

protected override async Task OnInitializedAsync()
{
context = await DbFactory.CreateDbContextAsync();
encounterValidationOutputs = await context.Set().FromSqlRaw(@" SELECT [Transaction_File_Name] AS InboundOriginalFileName FROM [mydatabase].[dbo].[repository]").ToListAsync();

// Debugging output
Console.WriteLine($"Fetched {encounterValidationOutputs.Count} items."); if (encounterValidationOutputs.Any()) { Console.WriteLine($"First item's InboundOriginalFileName: {encounterValidationOutputs.First().InboundOriginalFileName}"); } }

public async ValueTask DisposeAsync()
{
if (context != null)
{
await context.DisposeAsync();
}
}
}

EncounterBlazorAppContext.cs
using System;
using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks;
using Microsoft.EntityFrameworkCore;
using EncounterBlazorApp.Models;

namespace EncounterBlazorApp.Data
{
public class EncounterBlazorAppContext : DbContext
{
public EncounterBlazorAppContext(DbContextOptions options) : base(options)
{ }

public DbSet EncounterValidationOutputs => Set();

protected override void OnModelCreating(ModelBuilder modelBuilder)
{
base.OnModelCreating(modelBuilder);

// Configure EncounterValidationOutput as a keyless entity
modelBuilder.Entity().HasNoKey();
}
}
}

Program.cs
using EncounterBlazorApp.Components;
using EncounterBlazorApp.Data;
using Microsoft.EntityFrameworkCore;

var builder = WebApplication.CreateBuilder(args);

// Register IDbContextFactory for EncounterBlazorAppContext
builder.Services.AddDbContextFactory(options =>
options.UseSqlServer(builder.Configuration.GetConnectionString("EncounterBlazorAppContext"), sqlOptions =>
{
sqlOptions.CommandTimeout(60); // Set your desired command timeout in seconds
})
);

// Add other services
builder.Services.AddQuickGridEntityFrameworkAdapter();
builder.Services.AddDatabaseDeveloperPageExceptionFilter();
builder.Services.AddRazorComponents().AddInteractiveServerComponents();

var app = builder.Build();

// Configure the HTTP request pipeline
if (!app.Environment.IsDevelopment())
{
app.UseExceptionHandler("/Error", createScopeForErrors: true);
app.UseHsts();
app.UseMigrationsEndPoint();
}

app.UseHttpsRedirection();
app.UseAntiforgery();
app.MapStaticAssets();
app.MapRazorComponents().AddInteractiveServerRenderMode();

app.Run();


Подробнее здесь: https://stackoverflow.com/questions/793 ... n-my-class
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C#»