Finally, when the latest version of CYQ. Data V5 series (ORM Data Layer) is open-source, cyq. dataorm

Source: Internet
Author: User
Tags tojson

Finally, when the latest version of CYQ. Data V5 series (ORM Data Layer) is open-source, cyq. dataorm
Preface:

Don't ask me why the framework has changed from paid authorization to free open-source. There are not so many open-source resources in my life over the years. Although this is the core, it's okay if you look down.

Netizens in the group: Taiping said:

I told you one year ago when you opened up another project.
Two things haven't changed in the autumn of so many years. One is still single. The other is cyq. data is not open-source yet.
Finally, it is open-source!

Maybe, only when cyq. data is finally open-source can the single problem be solved. Otherwise, I spend too much time on it and have no time to chat with my sister.

 

Several important websites:

Source SVN address: https://github.com/cyq1162/cyqdata.git

Framework:

1: VS High Version: Search for cyqdata on Nuget

2: VS earlier: http://www.cyqdata.com/download/article-detail-426

3: Latest Introduction: CYQ. Data from getting started to giving up ORM series: starting with: automated framework programming thinking

3 (new series of tutorials before coming out) Tutorial URL: http://www.cyqdata.com/cyqdata/article-cate-33

The current version is V5.6.1.6.

V5 series update records:

--------------------------- Starting from V5.0 (filtering versions at the beginning: Some update functions are migrated to V4, so it is recorded in V4 )-----------------------------
7. The InsertOption option and overload method are added to the Insert method. You can set whether to fill in data as needed.

14. Enable the secondary database configuration. When the first database connection fails, the secondary database is switched to the secondary database (the second link is configured with "first configuration name_bak").

18: Add configurable ExeNonQuery locks to the methods in DbBase

20: handle the json-type single-digit separator bug and correct the bug of loading headless data, that is, the separator number "}, {"
21: added the Xml content ing function for the Framework extension.
22: The minimum CellValue unit is changed from IsChanged to State to optimized on-demand update or insertion.
23: added the Xml read/write function for MDataTable.

25: When the cache is manually specified as a non-Cache SetChange, if the cache does not exist, a 6-second temporary cache will be generated by default.

26: The Tojson method is added to most classes in the CYQ. Data. Table namespace, And the Json class is optimized to improve performance.
27: added the Select method to the MDataTable.
28: added batch insertion and update Methods for MDataTable
29: The MDataTable batch update method supports editing and modifying the DataGridView.
32: fixed the multiple database replacement labels in MySql: DateDiff and remove the "[]" symbol.
33: fixed the tags for replacing multiple databases in Oracle: GetDate () function and DateDiff function. Fixed the paging stored procedure [having problems with multiple tables] and added a simple DateDiff function.
35: added the value/value assignment for the Image and RadioButtonList controls in MActionUI.
36: added the DBToll class to create the table structure from the reverse engineering of the MDataTable.
37: added the overload method for the ResetProc of MProc and allowed not to clear parameters.
38: The default value is added to the structure of the MDataCell table.
39: added the IField syntax. You do not need to spell SQL strings.
40: Add a keyword to the table name.

41: External table architecture to txt, saving one query.
42: SetType. Custom extension. multiple attributes can be passed, and the InnerText and InnerXml attributes can be obtained at the same time, such as: Document. GetAttrValue (ID, "InnerText ");
43: Get the table schema, add or remove the table name keyword.
44: Adjust the AOP function and add four return values. you can skip the AopEnd event and change the default Aop to a singleton event.


56: The LoadValue method is added to MDataRow to avoid the need to call the ResetRow method because of the direct row Reference and value assignment.
57: When the MDataTable reader adds a specified query, the structure of the query column is inconsistent with that of the original table.
57: The Select method, Mssql/Oracle non-Paging query no longer calls the stored procedure, switch to the direct SQL statement.
58: The names of MDataColumn columns are determined and deleted. The column names are case insensitive.
59: When JsonHelper outputs, RowOp is added to filter out only required data, and the maximum program reduces the updated or inserted data.
60: added the Tool. ThreadBreak class to solve the mutual influence of multiple threads when multiple processes are generated in ASP. NET.
61: major changes: the Select and FindRow operations of MDataTable support SQL statements and IField syntax.
62: continue to make major changes: MAction supports Txt text and Xml, involves a lot of internal code adjustments, and continues to adjust and integrate.
63: optimization details judgment code, such as ToLower-> String. Compare IndexOf ('', StringComparison. OrdinalIgnoreCase.
64: the Xml test is passed, solving concurrent thread and process operations and a large number of details at the same time!
64: large adjustment of Aop, using AopInfo object to PASS Parameters
// 65: SetPara is added for parameter value passing. If the Where parameter is detected, no filtering is performed.
// 66: add the LDB lock table Solution Mechanism for Access, and add GC. Collect ()
67: fixed the AOP problem and cloned the instance to avoid multi-thread conflicts.
68: If no update is available, true is returned.
69: fixed the bug where IsSuccess results were not reset during the update in AOP, resulting in the same subsequent results as the previous one.
70: The Select statement of MDataTable adds a simple field comparison, for example, a> B (the value of column a> the value of column B)
71: Adjust the RealProxy method of Aop to be compatible with problems in Release.
72: Adjust formatwhere to add spaces before and after the like in is judgment. The string primary key is supported.
73: added the CacheTable attribute for the CacheManage class to facilitate the retrieval of memory table information.
74: Convert the incremental RowState state of the MDataTable and DataTable.

75: The length cannot be specified for the image type of MySql, which is compatible with the correction. (Otherwise, an error occurs when the index exceeds the array limit .)
76: Modify XHtmlAction: Add invalid characters to filter. string. format of SetForeach does not support {$ tag} {1.
77: MDataTable refers to the volume of data inserted, and SqlBulkCopy processing of mssql is added. In NoSql mode, ID duplicate detection is canceled to speed up the process.
78: added support for ODP. NET components and added OracleBulkCopy processing to speed up batch insertion.
79: removed the ICommon interface and added the deduplication of the Select method.
80: simple SQL syntax support is added to the text Database (MProc can execute SQL), and the internal query of MDataTable is optimized.
81: suffix or. xml suffix)
82: fixed the bug that sqlite could not read the table and reorganized the database structure to read (removed read-only, added primary key and auto-increment recognition, and generated script reorganization)
83: added support for prefix settings for SetToAll.
84: The file database CodeFirst allows not to generate the table structure. The link statement adds "ts = 0" to identify whether to create the table structure with the. ts suffix.
85: optimize the default order by id to the order by keyword segment.
86: added support for the wpf ui (UI mode changed to reflection mechanism at the same time ). )
87: added Distinct () to MDataTalle to filter duplicate rows. )
88: Support for adding keywords to table names for batch insert.
89: how to adjust MActionUI)
90: compatible with the table structure detection of the Data Warehouse (the structure can be read from. txt or. xml)
91: exists (UI value judgment) is supported)
92: Solve the default value of DateTime> Timestamp in MySql when creating the table structure. )
93: reduce the existence of where 1 = 1 and 1 = 1, and correct the auto-increment ID creation problem of the ID table structure of SQLite.
93: optimizes the compatibility of Oracle custom statements with paging stored procedures.
94: Adjust the names of individual fields in JsonHelper to enhance interaction with easyui.
95: Adjust the Json loading table structure (auto-increment ID + default date)
96: added the DBFast class. (Meanwhile, the configuration tool adds the function of generating pure entities)
97: the database link Retrieval Method supports + Conn from the last digit of the namespace. For example, the database link of the class under Web. Enum. Demo is: DemoConn
98: added the automatic batch assignment function for XmlAction (CMS tag function)
99: processing the "table name" keyword when the stored procedure is called
100: process the OutPutValue of MProc. If multiple values exist, Dictionary () is returned)
101: MAction processes the where condition for paging queries. If no sorting condition is set by default, the first keyword or the first field is used as the sorting condition for id. )
102: JsonHelper minor optimization, added the Add overload method
103: MDataTableFilter processes the FindAll method and adds orderby processing and sorting. )
104: added the implicit conversion of List <MDataRow> to MDataTable.
105: added In and Not In query support for MDataTableFilter.
106: added entity class suffix processing (to avoid the same name as enumeration generation)-Configuration tool Synchronization Update)
107: Solve the Insert problem of the Guid type (GroupID is independent from the value of string [1] to 4 ).
108: Strengthen JsonHelper and add some practical methods. )
109: added the GetChanges method to MDataTable, added the overload method to ToJson, and added the parameter (RowOp)
110: MSSQL data conversion adds equivalent conversions for xml, varbinary, and other types.
111: added the cross-database switch function (mssql and mysql support cross-database transactions. Others do not support cross-database transactions, but can switch database links)
112: Appconfig. DB. DefaultConn is added. You can configure the global default database link at the code level. )
113: remove the restriction that the first column must be a Primary column. )
114: AppConfig class. values can be assigned directly.
115: internal implementation interfaces of MDataTable and MDataRow shielding)
116: Add Auto to the AcceptOp parameter of the MDataTable AcceptChange method (check data in batches, update if data exists, and add if data does not exist)
117: optimization of small details related to automatic values (if the Delete and Update methods do not have parameters, if the primary key does not have a value, the system will try to automatically set the value from the UI)
118: added the CYQ. Data. Extension. RegisterUI class so that third-party controls can be registered (to support automatic value and automatic value assignment)
119: to be compatible with MSSQL database data conversion (to avoid date overflow ):
If the DateTime type field is directly assigned a character value: "{0001/1/1 0:00:00}", it will be changed to {1753/1/1 0:00:00} () and will not be changed in other cases. )
Append optimization: for MSSQL, DateTime is assigned to the field. minValue. The parameters for executing SQL commands are automatically optimized to System. data. sqlTypes. sqlDateTime. minValue {1753/1/1 0:00:00)
120: added the FieldSource enumeration attribute for OrmBase, which is suitable for source switching of the field data structure. )
121: added the StaticTool class. It handles the inheritance attribute branches of the Type property (the entity inherits from OrmBase ). )
122: handle some details (the Get and Set exceptions of the UI are not thrown, only logs are recorded). Delete static attributes in the insert row of NoSqlAction to avoid insertion errors caused by concurrency. )
123: optimize action. Bind (drop-down list) when the text and value are the same, the SQL statement is optimized to a field query. (2014-03-02)
124: added the GetColumnItems <T> (string columnName) method to MDataTable to conveniently obtain a set of columns. )
125: The Oracle sequence is changed from the entire database to the default one. To customize the settings, you can configure the AppConfig. DB. AutoID parameter. )
126: When JsonHelper outputs ToString (), if it is a Web environment (automatically escape \ t \ n \ r)
126: JsonHelper static method adjustment)
127: Automatic attributes of Emit to object processing (the name format of automatic attributes is <id> k _ BackingField)
128: corrected the returned value of DBTool CreateTable)
129: optimized AppConfig. GetConn. (If the link string does not contain spaces, Null is returned. If Null is passed by default, the value of Conn is obtained)
130: optimize the statement for retrieving the Data Metadata structure under MSSQL2008)
131: The AcceptChanges batch function of the MDataTable can be optimized to allow you to set the joint primary key to check duplicate or update conditions)
132: support for joint primary key processing)
133: MDataTable. Select and Find query conditions are case-insensitive)
134: rename some internal variables. MDataCell open attribute State (Value State)
135: The CYQ. Data. Log. LogTableName attribute is added. The table name can be configured (ErrorLogs by default)
136: MProc adds ExeMDataTableList to allow data from multiple result sets to be executed)
137: The CYQ. Data. Log. LogTableName attribute is added. The table name can be configured (ErrorLogs by default)
138: added the overload method to the SetState method of MDataRow (do not set the status of Null and Null values)
139: Log and MDataRow optimized Log output)
140: JsonHelper Optimized Output Format)
141: The Stored Procedure of oracle paging cancellation is converted to built-in)
142: Replace the SQL annotation symbol with an external configuration: AppConfig. DB. ReplaceSqlInjection)
143: When the SetSelectColumns of MAction is set to an incorrect column name, the system does not throw an exception, but ignores the incorrect column name and records the column name errors in the debugging statement. )
144: The JsonHelper optimization is greatly adjusted (over-half code rewriting) and supports multi-level Nested Entity output of Json. )
145: The SetOrdinal function is added to MDataColumn to sort MDataTable columns and solve the order of Custom column queries (MAction SetSelectColumns. )
146: JsonHelper optimizes (over-half code rewriting) and supports multi-level nested Json transfer of Entity. (2014-05-19)
147: MDataTable automatically identifies the primary key after receiving data in batches from Json. )
148: the metadata increases the floating point precision to return decimal places. )
149: Process Table switching between multiple databases)
150: added MSSQL, MySql, and Oracle field description transfer)
151: Process type conversions between various databases (more precise conversions and support for various types of data that are not commonly used), and increase the code size (=)
152: The CheckDuplicate attribute is added to MDataColumn to allow repeated columns. )
153: added the SimpleOrmBase base class. This base class only processes simple ORM functions without the AOP and UI interaction functions. )
154: added synonym support for MSSQL and Oracle. (2014-06-13)
155: added the AppConfig. DB. DeleteField configuration to delete the field identifier (you can change the MAction deletion operation to the Update identifier operation)
156: the built-in ErrorLogs = is changed to the open SysLogs, which can be used externally. )
157: Batch Set Value Method of MDataRow. The unified method name is LoadFrom (different [Json, Dictionary, object)
158: Remove: Three uncommon MAction Methods: SetIdentityInsertOn, SetIdentityInsertOff, and GetFromJson (this can be handled by action. Data. LoadFrom (json)
158: AOP removes the GetFromConfig interface that does not need to be implemented, adds the returned MAction, the parameters referenced by MProc, and whether the parameters are in the transaction)
159: MAction can be implicitly converted to MProc)
160: added support for Sybase databases)
161: optimized paging support)
162: Json implementation and Xml Conversion (ToJson and ToXml added for XHtmlAction) (=>)
163: Fixed 161 query condition loss caused by PAGE adjustment. (2014-07-30)
164: Adjust the small details of two Json outputs 1: {} empty array outputs without quotation marks; 2: MDataTable outputs Json, with only one line containing [] brackets. (2014-08-01)
165: When the MDataTable is adjusted to read Null data, it is displayed as Null. )
166: processing the Insert return value in Oracle. )
167: handling Json return null, adding overload methods, and ToDataTable details. (2014-08-31)
168: The primary key details are processed when MSSQL char36 is supported and the default value is newid. (2014-09-02)
169: fixed the problem where the specified column was not filtered when no data was returned for the MDataTable query. (2014-09-02)
170: fixed the Nullable type conversion issue when converting objects. (2014-09-04)
171: add the TableName attribute, row, and column header to the table structure class to add the Insert rewrite method)
172: Process Json details)
173: JsonHelper. OutResult, optimized)
174: override the Equals method of MDataCell to compare whether the two values are equal. (2014-10-09)
175: added Oracle 12 ODP. NET Processing. )
176: the type of the column header converted by MDataRow. Create (Hashtable), which is processed according to the actual value type. )
177: Automatic Value. When Post is null, non-String Conversion is DBNull. Value. (2014-12-01,2014-12-11)
178: Batch insert of GUID primary keys. IDs are generated by default. (2014-5 5)
179: fixed the ResetTable (view statement) issue during a transaction. )
180: batch operation of MDataTable (the DynamicData attribute allows external MProc or MAction to be received for the same transaction) (2015-01-08)
181: The GUID function is used to optimize the statements for generating data table structures. )
182: added the RecordsAffected read-only attribute for MAction and MProc (the number of lines affected when the SQL command is executed (-2 is abnormal )). )
183: MSSQL added cross-database synonym processing. )
184: The GUID field can be assigned a value: "newid" string. )
185: optimized the JsonHelper. ToJson (List <Dictionary...) method. )
186: the calculation method of adding four columns (Max, Min, Sum, and Avg) to the MDataTable. )
187: optimized [Display Error information when the table structure fails to be retrieved)
188: Process [Auto parameter of AcceptChanges of MDataTable. If no primary key Column exists, the primary key column and error message are automatically added)
189: After the Fill method of MAction [the non-Null values of all rows are changed to 1, and the former is 0)
190: fixed the ResetTable (Sqlite database) Problem)
191: fixed the query statement: Like with a comma (not stored in a stored procedure) in paging query)
192: no default value error occurred when processing Null values in Access)
193: small details adjustment (parameterization), automatic value, avoiding Cookie)
194: small details are adjusted. The condition for determining the status of automatic values is changed to: as long as the status is not 2, the value can be automatically set (corresponding to the Bug caused by 189)
195: Support for enumeration when the DBTool. GetColumns method is used to process cross-database data. )
196: New: DBTool. GetSchemaCacheKey can be used to obtain the Key of the cached table structure, thus canceling the table structure cache (available when the table structure is modified and cache needs to be refreshed ). )
197: Primary Key of Oracle (auto-increment recognition, which is determined from the original single int and extended to the number range ). )
198: added: The DBTool. AlterTable method supports modifying the table structure (Supplement: added field description output) (supports MSSQL, MySQL, Oracle, Sybase, and Access ). )
199: Strengthen Oracle's recognition of ODP. Net)
200: added the IsEnumToInt configuration in AppConfig. (the default table enumeration to Int mode is enabled only after the configuration is changed to dynamic modification of the table structure)
201: compatible with query sorting conditions such as [order by a, B, c asc)
202: configurable attributes of Log and AppDebug classes are moved to AppConfig)
203: optimized the standby Link Mechanism (switch to slave link when a master link fails)
204: New: AppConfig. DB. hiddenFields can globally hide certain fields (by default, cyqrownum (paging identifier of the Framework stored procedure), rowguid (column automatically generated when publishing and subscribing), and AppConfig. DB. deleteField (specified column)
205: Internally optimized Dictionary non-thread security processing)
206: subquery of view statements in Oracle)
207: optimized log output (including storing long-time execution statements separately from log files)
208: automatically remove the right space from the department. TrimEnd)
209: When the DataGrid list is bound under Winform, the column header automatically displays Chinese characters (obtained in description)
210: JsonHelper. Split ("{a: null}") for a Null value, convert it into a dictionary to keep the Key, and the value is empty (previously this Key was ignored)
211: When the MAction Fill is adjusted and the status is set to 1 (if the specified column is queried, only the specified column status is modified)
212: The name of All in the RowOp enumeration is changed to IgnoreNull. )
213: added overload for LoadFrom () of MDataRow: when no parameter is set by default, the value is automatically taken from the Web Post form. )
214: algorithm optimization is performed on the Select method of MDataTable without changing the original data after the operation)
215: added the Get <T> overload method to CacheManage)
216: added support for Html controls under Runat = server in the SetToAll method of MAction)
217: optimize the heavy-duty methods of the IList interfaces related to MDataTable, MDataRow, and MDataColumn (Mechanism Optimization, great changes) [add or remove a column for a row of MDataTable, will trigger the column operation of the entire table)
218: optimize the Add event of the row set of the MDataTable (Block constructors, add overload methods, etc)
219: The MDataTable method adds a overload for the GetColumnItems method. The isDistinct parameter removes duplicate data. )
220: convert an Empty column name of the MDataTable to "Empty _ Index ". )
221: optimizes the speed at which MDataTable creates rows (NewRow method. )
222: optimized the use of the Log class (open the WriteLogToDB method and add the Log Type LogType ). (7-30)
223: handle comments in custom view statements (originally not supported, changed to supported ). )
224: added the AppConfig. DB. CommandTimeout attribute to set the global command timeout time. )
225: optimized the conversion performance of JsonHelper)
225: fixed the Bug in text database functions caused by 221 optimization. (8-26)
226: the internal class IOHelper adds automatic identification of file encoding (reduce the Garbled text generated by reading Json files ). )
227: The return type of the transaction commit and rollback methods is changed to bool. )
228: fixed the 217 error in table structure attribution. )
229: added the overload method for SetToAll of MDataRow. )
230: optimized the log output when the type conversion of cell values is incorrect. )
231: added support for NameValueCollection conversion in the JsonHelper. ToJson method)
232: The JsonHelper. ToEntity method supports the conversion of sets)
233: MAction and MProc remove the optional parameters (param object [] AopPara) In addition, deletion, modification, query, and execution methods)
234: added SetAopPara for MAction and Mproc to set additional Aop parameters (corresponding to 233 of processing ). )
235: mysql double to mssql real type)
236: mysql (0001/1/1 0:00:00) date to mssql problem, the link string can be supplemented (Convert Zero Datetime = True)
237: mysql (MySQL. Data. dll) uses the new version (avoiding adding a given count to the semaphore will cause it to exceed its maximum count)
238: added parameter detection in the SetPara method of MAction to avoid repeated settings)
239: added support for table and field ing (that is, ignore "_" in the table name or field name, such as new MAction ("SysUser"). The original database table name can be Sys_User)
240: added the Join method for MDataTable (LeftJoin association can be implemented between two tables)
241: the return value of the Set method, such as MAction, MProc, and MDataTable, is changed to this)
242: MSSQL to Mysql is processed with multiple () numbers by default. )
243: added support for parameterized multiple databases "= :? "=:?" In UserName :? "Is compatible with the syntax and can be automatically formatted as =? . )
244: The view statement adds the recognition of the database: (select a. *, B. * from xxxx) The database. v will be mapped to the database link configured by the database Conn)
245: DBTool provides two methods (Keyword and NotKeyword)
246: fixed the problem of Mysql table judgment)
247: DBTool. CreateTable removes the internal table to determine whether the table exists and reduces the number of queries)
248: added ISNULL function multi-database translation)
249: shorten the waiting time on DBTool. TestConn to 3 seconds)
250: MDataTable batch insert: added a trigger allowed to trigger Mssql)
251: the formatting xx = '0' for the Mysql bit type where condition is added internally to change xx = 0)
252: handling MySql internal details (date and Binary fields)
253: Process small details (for example, the prompt error: fine => find)
254: handle some small details (filter keyword for SQL Injection cancels 'Char ('and other functions)
255: The where condition supports multi-condition formatting and processing details such as semicolons)
256: MAction (SQL) is compatible with SQL statement processing. )
257: the processing of automatic values for spaces is changed from TrimEnd to Trim)
258: added support for MySql batch statements)
259: The MDataTable Method for adding rows to columns)
260: added support for read/write splitting (web. config or app. config can be enabled directly)
If the default link is "Conn", you can add the following configuration items: Conn_Slave1, Conn_Slave2,... Conn_SlaveN)
261: Disable the SetAop Method for MProc and MAction)
262: The EndTransation method of MAction and MProc closes the link after the transaction is committed. If the transaction fails, the transaction is automatically rolled back)
263: When the Cache Contains checks the Key, if it has expired, it will be automatically removed and return Null)
264: added consistent service processing for read/write splitting. )
265: AppConfig. DB. MasterSlaveTime is added. The default value is 10 seconds (the operation service cache time when the master/Slave database is processed)
266: added the distributed Cache MemCached function. The original Cache Usage remains unchanged. You only need to configure AppConfig. Cache. MemCacheServers to automatically enable it)
267: Modify the default Cache time to 1 hour. Remove two uncommon Cache configuration items: AppConfig. Cache. CacheClearCallCount and AppConfig. Cache. CacheClearTime)
268: optimize the regular cleaning mechanism of the local Cache and cancel the configuration items of AppConfig. Cache. CacheClearCallCount. )
269: MSSQL filters out automatically generated tables when querying the table list, such as the tables generated when the copy/subscription function is enabled)
270: cancel the AppConfig. DB. ReplaceSqlInjection configuration item and add the AppConfig. DB. EditTimeFields item. When a field is specified, the MAction Update method automatically updates this time field to the current time)
271: The data structure MCellStruct adds the IsUniqueKey, IsForeignKey, and FKTableName attributes. For the single value of the where condition, the internal derivation function is added: action. if the value of Exists ("") is a string and the primary key is int or guid, it is switched to a unique key field for processing)
272: LoadFrom (MDataRow row) of MDataRow: by default, the table structure is not affected, that is, fields are not appended)
273: added MDataRow and MDataColumn debugging Visual View: Source SVN: http://code.taobao.org/svn/cyqopen/trunk/CYQ.Visualizer)
274: the delimiter used to process mysql batch data import)
275: added smart derivation for the MDataTable-related query methods [originally only available for MAction)
276: handling the escape of symbols for batch data import from mysql)
277: extract the UI operation interfaces of MAction to UI properties, move IUIValue and RegisterUI under Extension namespace to CYQ. Data. UI)

Project solution: 1: Project solution: Action and Cache

2: DAl layer, Extension, ORM, SQL, UI

3: Table and Tool

Project class relationship diagram: 1: inherited link:

 

2: The Link combination:

Finally:

Thank you for your support over the past few years !! The future development of the framework will depend on you !!

PS: If you are interested, you can play a game. How many design modes can be found in the source code? There is no time limit. You can paste it back in the comment whenever you find it.

Related Article

Contact Us

The content source of this page is from Internet, which doesn't represent Alibaba Cloud's opinion; products and services mentioned on that page don't have any relationship with Alibaba Cloud. If the content of the page makes you feel confusing, please write us an email, we will handle the problem within 5 days after receiving your email.

If you find any instances of plagiarism from the community, please send an email to: info-contact@alibabacloud.com and provide relevant evidence. A staff member will contact you within 5 working days.

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.