Note that there are some explanatory texts on larger screens.

plurals
  1. PO
    text
    copied!<p>XPO in overall is easy to work with. However, it can be a little pain when you plan to work with legacy database or try to introduce it into a brownfield app. Most painful obstacles I hit were:</p> <ul> <li>all objects need to inherit from XPO related classes and/or use XPO related attributes. So, no POCO objects</li> <li>no support for readonly persistent fields OOTB. It's possible, but you need to do a little hacking to stop XPO from updating field in DB</li> <li>no support for pre filtering associations, which can cause excessive network load</li> <li>Poor support for foreign composite keys. To be fair, no ORM handles composite keys nicely. They are considered to be "anti-ORM" pattern. </li> <li>few small annoyances</li> </ul> <p>As Dennis pointed out in comments, XPO was greatly improved since I wrote this answer originally. In particular, below things are no longer an issue:</p> <ul> <li>no serialization, so XPO objects are hard to use in disconected win forms scenario, with data coming through web services. - XPO supports now various serialization scenarios and can be easily used with WCF.</li> <li>you cannot do many-to-many relation mapping with your own interim table. Xpo wants specific name for such interim tables. - This is no longer a case</li> <li>no support for enums in postgreSql provider - You just need to write really simple value converter and you are good. </li> </ul> <p>Also, below issues will no longer be problem with next XPO release, coming later this year:</p> <ul> <li>no support for keys of type long</li> <li>no support for db schema in postrgeSql provider</li> </ul> <p>All in all, XPO was greatly improved. Most painfull obstacles were removed. You can still hit problems while working with legacy DB. But in general XPO became quite convenient to use.</p>
 

Querying!

 
Guidance

SQuiL has stopped working due to an internal error.

If you are curious you may find further information in the browser console, which is accessible through the devtools (F12).

Reload