Hi, we are looking for ORM system for our application and it seems DO is the thing to be a part of our application, but we have one question. Our application should be sensitive to data changes emitted by replication. Is it possible to make data in domain objects to be sensitive to such changes using DO? (I.e. DAL should discover data changes in DB and notify ORM layer to make appropriate data changes in domain objects.)


Updated at 23.04.2009 11:00:42

[quote="pavel.chistyakov":34pic0di]... DAL should discover data changes in DB and notify ORM layer to make appropriate data changes in domain objects.)

Do you want to perform some custom actions when data in database has been changed by replication, or you just want to ensure that objects will operate actual data after replication?[/quote:34pic0di] We want to be sure that objects operate with actual data, and if it's possible notify of changes.


Updated at 24.04.2009 7:02:11

Since our entities are fully transactional, you can be sure that their data is always actual within each transaction. But there are no capabilities for tracking changes in database that were made by another application, we even didn't thought about it yet. And it seems that such tracking isn't very useful in most cases. In a distributed application where database contents may be changed by any participating node, all nodes need to react to replicated changes, so such a notification seems not only useful but required.


Updated at 24.04.2009 7:40:23

Can you describe an example of such reaction? I'd like to conceive your situation in detail. Say there is a webserver and office server. Office personnel updates merchandise prices, which are replicated to webserver's database. Webserver accepts new orders, which are replicated to the office for processing by office personnel. Thus both servers do constantly need to refresh cached items collections with changes that were just replicated (so that the site shows correct prices and office server shows correct order list)


Updated at 24.04.2009 10:13:46

Collections and entities is refreshed automatically by default after each transaction, so in your case everything will work as you are expecting. We try to check this capability on DO 3.9 demo samples, but domain objects weren't updated automatically. Is 3.9 supposed to support this feature?

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

asked Apr 23 '09 at 07:51

Editor's gravatar image

Editor
46156156157


One Answer:

... DAL should discover data changes in DB and notify ORM layer to make appropriate data changes in domain objects.)

Do you want to perform some custom actions when data in database has been changed by replication, or you just want to ensure that objects will operate actual data after replication?


We want to be sure that objects operate with actual data, and if it's possible notify of changes.

Since our entities are fully transactional, you can be sure that their data is always actual within each transaction. But there are no capabilities for tracking changes in database that were made by another application, we even didn't thought about it yet. And it seems that such tracking isn't very useful in most cases.


We try to check this capability on DO 3.9 demo samples, but domain objects weren't updated automatically. Is 3.9 supposed to support this feature?

No, DO 3.x is previous generation of DataObjects.Net, we don't implement new features for DO 3.x (just bugfixes) and it is recommended to start new projects with DO 4. And I recommend you to test this behaviour on DO 4.

By the way, synchronization mechanism (analogue of replication) for DO4 will be implemented in nearest future.

answered Apr 23 '09 at 09:37

Editor's gravatar image

Editor
46156156157

Alex Kofman wrote: Can you describe an example of such reaction? I'd like to conceive your situation in detail.

(Apr 23 '09 at 09:37) Editor Editor's gravatar image

Alex Kofman wrote: Collections and entities is refreshed automatically by default after each transaction, so in your case everything will work as you are expecting.

(Apr 23 '09 at 09:37) Editor Editor'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