OQL.NET is a strong-typed database object query language. The difference between OQL.NET and SQL or other OQL lies in that OQL.NET is based on native.NET language (e.g. C# and VB.NET) instead of on strings. OQL.NET is compatible with SQL-92 standard. It supports all the major elements of SQL DML, including select, insert, update and delete statements, and select, from, join, on, where, group by, having, order by and case clauses. OQL.NET is well designed. Without installing a plug-in, you can get precise and proper context help while writing OQL through IDE. OQL.NET can guide user to write out correct and compatible database query statements step by step. OQL.NET is a complete object-oriented and strong-typed database query language. The query statements you write will be compiled together with your program. Thus, during compiling, OQL.NET can help you find the errors in the query statements, instead of picking up them with great difficulty at the runtime. If the schema of a database is changed, you can regenerate the query classes with Macrobject CodeAuto (a code generator) etc., and as you compile the program again, the compile-time errors will tell you which OQL statements need to be altered. OQL.NET supports many kinds of databases. While switching between databases, it is not necessary to change the source code or recompile it. OQL.NET can help reduce over 80% of the working time spent in writing query statements, and 95% of the time in debugging them. It costs no performance loss, nevertheless, it improves the reliability of the system (a program without any wrong query statements). OQL.NET is based on the style of cascading statements in native language. It is so legible that it is as good as the original SQL statement. OQL.NET supports dividing long query statements into small parts and extracting the common parts, which is similar to the refactoring function (e.g. Extracting sub-function). Thereby it is much easier to read and maintain.