Исключение произошло при переходе на результаты запроса для контекста типа 'myproject.data.sqlserver.sqlserverconcontext'.
system.invalidoperation. Операция. Тема: < /p>
- Как я могу сначала отображать открытый текст перед изображением в Blazor? Ответ с лучшим рейтингом (со второй ветки с маркированным вопросом), я уже внедрил эти аннотации на своем конце, но я столкнулся с той же проблемой.вместо этого. Приведенная выше ошибка разрешена, но если я запускаю программу, я получаю ошибку: < /p>
Код: Выделить всё
[Browsable(false)] [Bindable(false)] [DesignerSerializationVisibility(DesignerSerializationVisibility.Hidden)] [EditorBrowsable(EditorBrowsableState.Never)] [Column("img")] public byte[]? Img { get; set; } < /code> Примечание (на момент написания этой статьи): Последнее действие потока-31 октября 2019 года, в 14:52. /> версия < /th> Дата выпуска исходного выпуска < /th> < /tr> < /thead> .net 9 < /td> 12 ноября, 2024 < /td> < /table> < /div> Источник: .net и .net Core Lifecycle, каковы правильные номера версий для C#?, Что нового в C# 13. < /p> Я искал способ [b] < /strong>. Класс . При чтении этой статьи: наследование - выводит типы для создания более специализированного поведения. Я обнаружил, что есть концепция под названием: предотвращение дальнейшего вывода, которую я цитирую: < /p> Класс может помешать другим классам от его наследства или от любого из его членов, объявив себя или члена как герметичный. < /P> < /blockquote> в дополнение, в соответствии с герметичным (C#. /> Вы также можете использовать модификатор запечатаного < /code> на методе или свойстве, который переопределяет виртуальный метод или свойство в базовом классе. Это позволяет вам позволить классам выходить из вашего класса и не допустить их переоценки конкретных виртуальных методов или свойств. Вот мой фрагмент кода: < /p> [Keyless] public class PlainTextList : ImgList { // other properties here... [Column("name")] public string? Name { get; set; } [Column("img")] sealed protected override byte[]? Img { get; set; } } [Keyless] public class ImgList { [Column("id")] public string? ID { get; set; } [Column("img")] protected virtual byte[]? Img { get; set; } } < /code> Наследство класса работает, но на моем коде первого кода на странице бритвы я сталкиваюсь с исключением: < /p> 'plaintext.img 'incescessible из-за уровня защиты (CS0122) < /p> на public
Исключение произошло при переходе на результаты запроса для контекста типа 'myproject.data.sqlserver.sqlserverconconceptontext'. 'Outsql' Operation. < /P>
< /blockquote>
Это мой фрагмент кода моего глобального помощника: < /p>Примечание: {some_plain_text_here} , чтобы сократить скрипт.Код: Выделить всё
public async Task PTListFromSqlAsyncList(string spName, Dictionary parameters) { var paramDefs = SQLServerInnerHelper.GlobalWithoutOutputParams(); SqlParameter[]? sqlParameter = MinimalDbSettings.SPArrayOfTuplesAndDictPreScale(paramDefs, parameters); var sqlParam = MinimalDbSettings.SQLParamLessDynamic(spName, sqlParameter); return await _context.PlainTextList .FromSql(sqlParam) .ToListAsync(); } public async Task ImgListFromSqlAsyncList(string spName, Dictionary parameters) { var paramDefs = SQLServerInnerHelper.GlobalWithoutOutputParams(); SqlParameter[]? sqlParameter = MinimalDbSettings.SPArrayOfTuplesAndDictPreScale(paramDefs, parameters); var sqlParam = MinimalDbSettings.SQLParamLessDynamic(spName, sqlParameter); return await _context.ImgList .FromSql(sqlParam) .ToListAsync(); } < /code> Вот как я управляю этими свойствами в коде первого кода (частичная часть его): < /p> private List? pTList = new(); private List? imgList = new(); private PaginationState pagination = new PaginationState(); private string nameFilter = string.Empty; private IEnumerable? filteredList => string.IsNullOrWhiteSpace(nameFilter) ? pTList : (initPerPage == PaginationPerPage.ShowAll) ? pTList!.Where(data => data.Name?.ToLower().Contains(nameFilter.ToLower()) == true) : pTList!.Where(data => data.Name?.ToLower().Contains(nameFilter.ToLower()) == true); private IEnumerable? pagedList => filteredList! .Skip((pagination.CurrentPage - 1) * pagination.ItemsPerPage) .Take(pagination.ItemsPerPage); private int TotalPages => (int)Math.Ceiling((double)filteredList!.Count() / pagination.ItemsPerPage); private string currentSortColumn = ""; // The stored procedure's sorting script should handle the initial load private bool sortAscending = true; private IEnumerable? SortedList => currentSortColumn switch { // other code for sorting of fields "Name" => sortAscending ? pagedList!.OrderBy(a => a.Name) : pagedList!.OrderByDescending(a => a.Name), "Img" => sortAscending ? pagedList!.OrderBy(a => a.Img) : pagedList!.OrderByDescending(a => a.Img), _ => pagedList }; < /code> Примечание. Приведенный выше фрагмент кода используется для таблицы.private async Task LoadPlainTexts() { var sQLServerHelper = new SQLServerHelper(context); pTList = null; // ensure spinner shows StateHasChanged(); // force re-render to show spinner var spParam = SQLServerInnerHelper.SomeGlobalMethodRazorPageParam(key: "PLAINTEXT_LIST"); pTList = await sQLServerHelper.PTListFromSqlAsyncList("testSP", spParam); pagination.TotalRecords = pTList.Count; if (pTList is null) { NavigationManager.NavigateTo("notfound"); } StateHasChanged(); } private async Task LoadImages() { var sQLServerHelper = new SQLServerHelper(context); imgList = null; // ensure spinner shows StateHasChanged(); // force re-render to show spinner var spParam = SQLServerInnerHelper.SomeGlobalMethodRazorPageParam(key: "IMG_LIST"); imgList = await sQLServerHelper.ImgListFromSqlAsyncList("testSP", spParam); if (imgList is null) { NavigationManager.NavigateTo("notfound"); } StateHasChanged(); } < /code> В моем SP у меня есть две отдельные функции для списка простого текста и список данных файла. Вот мой упрощенный скрипт: < /p> funtext_list function < /h4> SELECT id, name, {some_plain_text_here} FROM SomeTableПримечание. Сценарий t-sql предназначен для демонстрационных целей только .Код: Выделить всё
SELECT id, img FROM SomeTable < /code> Показывает, что использование герметичного модификатора для моего конкретного варианта использования не работает, как и ожидалось. Дизайн системы, к которому я стремился принести отдельные экземпляры для списка простого текста [/b] и списка данных [b] File [/b]. Затем, на уровне приложения, я объединю эти записи в один список. Тем не менее, рендеринг асинхронно разделен для [b] простого текста [/b] и [b] файловых данных [/b], что делает более удобный пользовательский опыт . Я использовал концепцию наследие , чтобы слияние двух классов, и я использовал меня, потому что я задумал меня, я использовал меня, я использовал меня, потому что я использовал меня, я использовал меня, я использовал, потому что я задумал меня, и я использовал, потому что я использовал меня, и я использовал, потому что я использовал меня, и я использовал меня, я использовал, потому что я задумал меня, чтобы я был навсегда разыскивается.SELECT st.id, st.name, sot.img {some_plain_text_here} FROM SomeTable AS st INNER JOIN SomeOtherTable AS sot ON sot.id = st.id
Мое веб-приложение Blazor работает гладко, но разделение проблем для em> emnedendered eM> emneNenderyed-em-em-em-em-em-em-em-em-em-em-em-em-em-em-em-em-em. правильно. Другими словами, данные Plain Text и файл отображаются одновременно, или простой текст все еще связан с классом модели файла.
Я был удивлен, потому что я думал, что картирование в EF Core разделяет plain Text и файлы , которые предоставляются данные, предоставленные DEF, которые предоставлены DEF, которые предоставляются DEF, которые предоставляются DEF. Как вы можете видеть в моем глобальном помощнике, классы base < /em> и , полученные < /em>, указаны отдельно и основаны на соответствующем их типе класса. классы свойства? - Есть ли другие существующие решения в C#/. Net 9? Позже пропущенные свойства на коде фронта/заднего времени?
Подробнее здесь: https://stackoverflow.com/questions/797 ... nd-derived