ذخیره 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());
}
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 ذخیره کنین نوشته شده ، وگرنه خیلی از اصول کدنویسی داخلش رعایت نشده ، صرفا برای راهنمایی شما به این شکل پیاده شده.
سوالی داشتید بفرماید.