Hi, I'd like to how many features listed below are supported or are going to be supported by DataObjects: 1. Disconnected session - session detach & reattach later (suppose this is supported out of the box) 2. Disconnected session persistence - you can serialize a disconnected session to some format (binary, xml, json, ...) and deserialize later, then reattach 3. Differential serialization - the serialized session state is a diff, contains only modifications made to entities in that session and doesn't remember the unmodified fields 4. Serialized session state can be deserialized in different process and used just like it were local 5. Compatibility with System.Transactions (DataObjects can be used with distributed transactions without requiring any special handling) Why I'm asking? Because I'd like these features to implement a generic mechanism for handling long-running transactions with savepoint functionality. Best regards and thaks for information Rafal

This thread was imported from our support forum. The original discussion may contain more detailed answer. Original topic by nightwatch.

asked Dec 30 '09 at 22:39

Editor's gravatar image


One Answer:

1 - Works 2 - Works (standard .NET formatters) 3 - Possible, but not as you assume: yes, we keep both original state and modifications made do it (we use DifferentialDictionary<k,v> & DifferentialTuple to store the changes internally - this is necessary to implement local nested transactions there) but you can't serialize only a modifications stored there. But we keep operation log as well (OperationSet), which is serializable. It can be re-applied to any Session (disconnected or not). Btw, it's possible to gather operations into such a log from any Session as well (disconnected or not) - see OperationLogger type, it does all the magic. Later undo capability will be added there, + this must be polished before release. 4 - Surely. But there must be Domain with the same model. 5 - Nothing is done here, but as far as I remember, we need just volatile resource manager to have this working. So this is to be done.

And yes, support for long-running transactions is one of scenarios we're keeping in mind. As far as I remember, I already mentioned in one of our promo texts for new DO4 web site that this component offers a nice alternative to e.g. NHibernate.Burrow, that is designed especially for such cases in web applications.

P.S. Likely, you forgot to mention version checks on application of logged operations ;) This already works as well. Moreover, likely, there will be very flexible configuration in future.

> is it the coolest ORM or what?

We hope to be coolest in our niche in several months :). Coolest ORM seems too much for any of ORMs...

> do you support query AST or something that could be used to dynamically construct queries in code (without lambdas or reflection)?

Btw, may be it's not related much to the subject, but since this is also about LINQ and expressions... So recently we added so-called LINQ preprocessors. Dmitri Maximov has published an example of their possible usage: http://dmitrimaximov.blogspot.com/2009/ ... on-of.html - may be this will be interesting for you as well.

P.S. Happy New Year ;)

answered Dec 31 '09 at 05:48

Alex%20Yakunin's gravatar image

Alex Yakunin

nightwatch wrote: Man, this looks better than I expected, is it the coolest ORM or what? One more question: do you support query AST or something that could be used to dynamically construct queries in code (without lambdas or reflection)?

(Dec 31 '09 at 05:48) Editor Editor's gravatar image
(Dec 31 '09 at 05:48) Alex Yakunin Alex%20Yakunin's gravatar image
Your answer
Please start posting your answer anonymously - your answer will be saved within the current session and published after you log in or create a new account. Please try to give a substantial answer, for discussions, please use comments and please do remember to vote (after you log in)!
toggle preview

powered by OSQA