50٪ تخفیف روی تمام دوره‌ها!
پایان تخفیف تا:
مشاهده دوره‌ها
0

ذخیره BinaryFormatter در دیتابیس

سلام

در کد زیر اطلاعات treeview در فایل ذخیره میشه ، آیا راهی هست که بجای فایل در دیتابیس ذخیره بشه ؟

SaveFileDialog save = new SaveFileDialog();
            save.ShowDialog();

            using (Stream file = File.Open( save.FileName , FileMode.Create))
            {
                BinaryFormatter bf = new BinaryFormatter();
                bf.Serialize(file, treeView1.Nodes.Cast<TreeNode>().ToList());
            }

پرسیده شده در 1403/03/21 توسط

2 پاسخ

2

با سلام

اولین مورد اینکه BinaryFormatter دیگه obsolete شده و در دات نت 8 کلا نمیتونید ازش استفاده کنید. پس بهتر هست از روش دیگه ای استفاده کنین.

برای مثال میتونین ، لیست خودتون رو در ابتدا به Json تبدیل کنین و بعد از اون Json رو به آرایه ی بایت تبدیل کنین

مثلا کلاس TreeNode رو به شکل زیر تعریف کنین:

public class TreeNode
{
    public int ValueA { get; protected set; }
    public int ValueB { get; protected set; }


    public byte[] ToByteArray()
    {
        var json = JsonConvert.SerializeObject(this);
        return Encoding.UTF8.GetBytes(json);
    }

}


مدل دیتابیس ما هم به شکل زیر تعریل شده باشه:

public class TreeData
{
    public TreeData(byte[] data)
    {
        Data = data;
    }

    public int Id { get; protected set; }
    public byte[] Data { get; protected set; }
}

حالا به طریق زیر میتونین مدل رو تو دیتابیس ذخیره کنین :

var model = new TreeNode();

using (var ct = new DomainContext())
{
    var bytes = model.ToByteArray();
    ct.TreeDatas.Add(new TreeData(bytes));
    ct.SaveChanges();
}

مثال بالا صرفا برای نمایش اینکه چطور دیتا رو توی دیتابیس با استفاده از EF Core ذخیره کنین نوشته شده ، وگرنه خیلی از اصول کدنویسی داخلش رعایت نشده ، صرفا برای راهنمایی شما به این شکل پیاده شده.


سوالی داشتید بفرماید.



پاسخ در 1403/03/22 توسط

پاسخ شما