Моя задача - получить фотографию из потока, а затем сохранить ее в локальное хранилище и передать путь к этой фотографии в ViewModel, а затем сохранить путь в базе данных. Я поместил логику в ViewModel, получил фотографию из потока и сохранил ее в локальное хранилище, теперь я пытаюсь передать этот путь в базу данных, чтобы использовать ее позже, например, в CarouselView, но хотя код ниже не вызывает никаких исключений, он также не создает никаких записей в базе данных, и я не могу понять, почему это происходит? Я прикрепляю скриншот представления из приложения, и вот описание: когда я нажимаю кнопку «Добавить», я выполняю логику из ViewModel и открываю поток, получаю фотографию и сохраняю ее в локальном хранилище. Как вы можете видеть из кода ниже, я использую привязку команды. Я использую следующие пакеты: < /p>
- Community Toolkit.mvvm 12.1.0 < /li>
Сообщество Toolkit.maui 12.1.0 < /li>
EF Core 9.0.7 < /li>
функции. 9.0.4
xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
x:Class="Meetoplatform.Aversion.Aview.Aregview.Aregsteptree"
xmlns:toolkit="http://schemas.microsoft.com/dotnet/2022/maui/toolkit"
xmlns:aninmbtn="clr-namespace:Meetoplatform.Resources.Triggeraction"
xmlns:mvvm="clr-namespace:MeetoContext.ViewModels;assembly=MeetoContext"
x:DataType="mvvm:VMSteptree">
viewmodel logic
using CommunityToolkit.Mvvm.Input;
using MeetoContext.Models;
namespace MeetoContext.ViewModels
{
public partial class VMSteptree : ObservableObject
{
[ObservableProperty]
private string _photoprofile;
[RelayCommand]
public static async Task SaveAsync()
{
if (MediaPicker.Default.IsCaptureSupported)
{
FileResult photo = await MediaPicker.Default.CapturePhotoAsync();
if (photo != null)
{
// save the file into local storage
string localFilePath = Path.Combine(FileSystem.CacheDirectory, photo.FileName);
using Stream sourceStream = await photo.OpenReadAsync();
using FileStream localFileStream = File.OpenWrite(localFilePath);
await sourceStream.CopyToAsync(localFileStream);
//Adding a file path in my opinion
DbMeeto dba = new();
Auchman auchman = new()
{
Photoprofile = new(localFilePath)
};
dba.Auchmans.Update(auchman);
}
}
}
}
}
код за страницей
using MeetoContext.ViewModels;
namespace Meetoplatform.Aversion.Aview.Aregview;
public partial class Aregsteptree : ContentView
{
IFileSaver fileSaver;
public Aregsteptree()
{
InitializeComponent();
VMSteptree vMSteptree = new();
BindingContext = vMSteptree;
this.fileSaver = fileSaver;
}
private async void Gotostepfor_Clicked(object sender, EventArgs e)
{
await Shell.Current.GoToAsync("stepfor");
}
}
model
namespace MeetoContext.Models
{
public class Auchman
{
[Column("id")]
public int Id { get; set; }
[Column("photoprofile")]
public string Photoprofile { get; set; }
public Meetman Meetman { get; set; }
}
}
Подробнее здесь: https://stackoverflow.com/questions/797 ... m-net-maui
Мобильная версия