Как я могу сохранить объекты данных в сетке данных без использования базы данных - PullRequest
0 голосов
/ 25 августа 2018

Мне нужно создать Datagrid, который будет показывать список автомобилей, я хочу иметь возможность добавлять, удалять и сохранять новые, но у меня нет доступа к базе данных.

Какие будут мои лучшие варианты?

Можно ли сохранять объекты в текстовом файле?

Автомобиль Объект

namespace DataGridTesting
{
    public class Car
    {
        public int ID { get; set; }
        public string Model { get; set; }
        public string Make { get; set; }
        public string Year { get; set; }
        public bool HasSunRoof { get; set; }
    }
}

Codebehind

namespace DataGridTesting
{
    public partial class MainWindow : Window
    {
        public MainWindow()
        {
            InitializeComponent();
            carsDataGrid.ItemsSource = LoadCollectionData();
        }

        private List<Car> LoadCollectionData()
        {
            List<Car> cars = new List<Car>();
            cars.Add(new Car() {
                ID = 101,
                Model = "Mustang",
                Make = "Ford",
                Year = "1995"
                HasSunRoof = false
            });

            cars.Add(new Car() {
                ID = 102,
                Model = "Mazda3",
                Make = "Mazda",
                Year = "2011"
                HasSunRoof = false
            });

            cars.Add(new Car() {
                ID = 103,
                Model = "F150",
                Make = "Ford",
                Year = "2018"
                HasSunRoof = false
            });

            return cars;
        }
    }
}

XAML:

<Window x:Class="DataGridTesting.MainWindow"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
    xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
    xmlns:local="clr-namespace:DataGridTesting"
    mc:Ignorable="d"
    Title="MainWindow" Height="350" Width="604.138">
<Grid>
    <DataGrid x:Name="carsDataGrid" HorizontalAlignment="Left" Margin="10,10,0,0" VerticalAlignment="Top" Height="240" Width="576"/>
</Grid>
</Window>

1 Ответ

0 голосов
/ 25 августа 2018

Подводя итог опций мы предоставили в комментариях.

Вероятно, самый простой способ сохранить объекты - это сериализовать их в JSON (строку) и затем сохранить в текстовом файле. Используя библиотеку NewtonSoft , это так же просто, как

string data = JsonConvert.SerializeObject(cars);
File.WriteAllText(file, data);

Позже вы можете использовать метод DeserializeObject, чтобы восстановить объекты из сохраненной строки.

Другим форматом для сериализации является XML. Это так же просто, как JSON, но выходная строка более многословна и, следовательно, менее читаема.

.NET имеет встроенную поддержку сериализации XML, поэтому вам не нужны сторонние библиотеки. То же самое можно сказать и о JSON, но NewtonSoft используется всеми для сериализации JSON.

Если вы знакомы с SQL, вы можете попробовать SQLite, который является файловой базой данных (по соглашению она имеет расширение .sqlite) и не требует отдельного сервера. Вы должны ссылаться на библиотеку SQLite.NET в вашей программе, и строка подключения имеет вид

“Data Source=mydb.sqlite;Version=3;”

тогда вы можете использовать его как другие полноценные базы данных.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...