Прежде всего, я новичок в 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
Как настроить Blazor QuickGrid для распознавания полей в моем классе? ⇐ C#
Место общения программистов C#
1736276900
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/aspnet/core/blazor/tutorials/movie-database-app/part-2?view=aspnetcore-9.0&pivots=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
[url=encountervalidationoutputs/create]Create New[/url]
@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();
Подробнее здесь: [url]https://stackoverflow.com/questions/79337046/how-do-i-setup-a-blazor-quickgrid-to-recognize-the-fields-in-my-class[/url]
Ответить
1 сообщение
• Страница 1 из 1
Перейти
- Кемерово-IT
- ↳ Javascript
- ↳ C#
- ↳ JAVA
- ↳ Elasticsearch aggregation
- ↳ Python
- ↳ Php
- ↳ Android
- ↳ Html
- ↳ Jquery
- ↳ C++
- ↳ IOS
- ↳ CSS
- ↳ Excel
- ↳ Linux
- ↳ Apache
- ↳ MySql
- Детский мир
- Для души
- ↳ Музыкальные инструменты даром
- ↳ Печатная продукция даром
- Внешняя красота и здоровье
- ↳ Одежда и обувь для взрослых даром
- ↳ Товары для здоровья
- ↳ Физкультура и спорт
- Техника - даром!
- ↳ Автомобилистам
- ↳ Компьютерная техника
- ↳ Плиты: газовые и электрические
- ↳ Холодильники
- ↳ Стиральные машины
- ↳ Телевизоры
- ↳ Телефоны, смартфоны, плашеты
- ↳ Швейные машинки
- ↳ Прочая электроника и техника
- ↳ Фототехника
- Ремонт и интерьер
- ↳ Стройматериалы, инструмент
- ↳ Мебель и предметы интерьера даром
- ↳ Cантехника
- Другие темы
- ↳ Разное даром
- ↳ Давай меняться!
- ↳ Отдам\возьму за копеечку
- ↳ Работа и подработка в Кемерове
- ↳ Давай с тобой поговорим...
Мобильная версия