[英]How to serialize database first EF5 object to Byte array?
如何最好地將Entity Framework對象序列化為字節數組(以便可以將其緩存在Redis中)?
序列化通常需要將屬性添加到屬性中,但是由於該項目首先是數據庫,因此由於代碼生成,我無法添加屬性(而且我不確定在沒有.NET嘗試序列化的情況下我如何說要序列化的內容整個數據庫(因為要通過嵌套集合)。
我想實現的是一樣的東西:
Product product;
using(var context = new MyContext())
{
product = new ProductRepository(context).GetItem(123456);
}
byte[] productSerialized = Serialize(product);
存儲庫中已加載的所有內容都將被序列化,而未存儲的內容將被忽略。 如果我什至可以解決這個問題,那就太好了。
您可以使用MemoryStream並獲取其緩沖區,如下所示:
public byte[] Serialize(Product product)
{
MemoryStream stream = new MemoryStream();
XmlSerializer serializer = new XmlSerializer(typeof(Product));
serializer.Serialize(stream, product);
return stream.GetBuffer();
}
如果您的Product
是結構,那么這可能會幫助您:
public byte[] Serialize(Product p)
{
var size = Marshal.SizeOf(typeof(Product));
// Both managed and unmanaged buffers required.
var bytes = new byte[size];
var ptr = Marshal.AllocHGlobal(size);
// Copy object byte-to-byte to unmanaged memory.
Marshal.StructureToPtr(p, ptr, false);
// Copy data from unmanaged memory to managed buffer.
Marshal.Copy(ptr, bytes, 0, size);
// Release unmanaged memory.
Marshal.FreeHGlobal(ptr);
return bytes;
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.