Comments (6)
I was curious, so I tried your sample. It looks like the trouble is that the SerializeToStream method does serialize the object, but leaves the stream's position at the end of the serialized object. You'll need to add this:
stream.Seek(0, SeekOrigin.Begin);
So, ultimately, the method looks like this:
public static MemoryStream SerializeToStream(object o) {
MemoryStream stream = new MemoryStream();
IFormatter formatter = new BinaryFormatter();
formatter.Serialize(stream, o);
stream.Seek(0, SeekOrigin.Begin);
return stream;
}
This will set the stream position at the beginning, so that when it is persisted in the database, it reads the whole stream.
Hope this helps.
from litedb.
Very interesting.
How did you find about it?
Sent from my Windows Phone
From: Mykemailto:[email protected]
Sent: 02-09-2015 23:40
To: mbdavid/LiteDBmailto:[email protected]
Cc: Sherry Ummenmailto:[email protected]
Subject: Re: [LiteDB] Not able to Retrieve back the stored C# object stored as Stream in FileStorage (#54)
I was curious, so I tried your sample. It looks like the trouble is that the SerializeToStream method does serialize the object, but leaves the stream's position at the end of the serialized object. You'll need to add this:
stream.Seek(0, SeekOrigin.Begin);
So, ultimately, the method looks like this:
public static MemoryStream SerializeToStream(object o) {
MemoryStream stream = new MemoryStream();
IFormatter formatter = new BinaryFormatter();
formatter.Serialize(stream, o);
stream.Seek(0, SeekOrigin.Begin);
return stream;
}
This will set the stream position at the beginning, so that when it is persisted in the database, it reads the whole stream.
Hope this helps.
Reply to this email directly or view it on GitHub:
#54 (comment)
from litedb.
I've made the same mistake 😄
It's not really an issue with LiteDB... Any library that reads from a stream always reads from the current position. This gives you the ability to set the stream to an appropriate position before passing it in. I've been bitten by this one before in an unrelated case, but that experience let me recognize the issue right off.
from litedb.
Very nice. I will try this in few hours as its quite late here in Finland n I shoul get some sleep. Thanks
Sent from my Windows Phone
From: Mykemailto:[email protected]
Sent: 03-09-2015 00:06
To: mbdavid/LiteDBmailto:[email protected]
Cc: Sherry Ummenmailto:[email protected]
Subject: Re: [LiteDB] Not able to Retrieve back the stored C# object stored as Stream in FileStorage (#54)
I've made the same mistake 😄
It's not really an issue with LiteDB... Any library that reads from a stream always reads from the current position. This gives you the ability to set the stream to an appropriate position before passing it in. I've been bitten by this one before in an unrelated case, but that experience let me recognize the issue right off.
Reply to this email directly or view it on GitHub:
#54 (comment)
from litedb.
Hi @sherry-ummen! @mykemaas is right, LiteDB use stream from current position. But, the best solution could be implement Write
operation in LiteFileStream
. It's not a simple think, so I just throw a not implement exception. This custom Stream
was a contribution from other old project FileDB
that I wrote 5 year ago.
from litedb.
Great thanks Myke and Mauricio. it worked
from litedb.
Related Issues (20)
- Make all internal Task SyncContext agnostic HOT 2
- [BUG] LiteDB Docs FileStorage section "fs.Find("$/photos/2014/");" not supported in v5
- [SUGGESTION] Upgrade Framework dependencies HOT 1
- [QUESTION] Parameterized queries not working?
- ArgumentException when fetching db item with missing Enum value HOT 2
- [QUESTION] Save :memory: to disk? HOT 2
- [BUG] HOT 1
- [QUESTION] UpdateMany with Dictionary<string, object>
- [QUESTION] please need example for https://www.litedb.org/docs/encryption/
- Regression [BUG] LiteDB.LiteException: ReadFull must read PAGE_SIZE bytes [{0}] HOT 3
- [QUESTION] Upgrading database created with v3 doesn't work in v5
- [BUG] Detected loop in FindAll({0}) HOT 1
- [BUG] Getting into a rare and unrecoverable state after 5.0.21 HOT 1
- Getting list of Ids from collection throws Unable to cast object of type 'LiteDB.ObjectId' to type 'System.String'
- [BUG] LiteDB will return null for DB entries by the very first access
- [BUG] The LiteDB not shower value type long to private property HOT 2
- [QUESTION] Unset a a property HOT 2
- [CONTRIBUTION] Schema Migrations for LiteDb - introducing LiteDbMigrations HOT 2
- [BUG] First level .Include(...) doesnt matter HOT 2
- [BUG] iterating over an IEnumerable<LiteFileInfo<TFileId>> errors out on the second element if the DB is opened in shared mode
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from litedb.