Windows 8 Visual Studio 2012 Issues

Discussion of open issues, suggestions and bugs regarding ADO.NET provider for MySQL
Post Reply
RonL
Posts: 7
Joined: Thu 08 Nov 2012 16:28

Windows 8 Visual Studio 2012 Issues

Post by RonL » Thu 08 Nov 2012 16:35

Hello Devart,

I have used the dotConnect for MySQL successfully for a year with Windows Vista / Visual Studio 2010 Dynamic Data and dotConnect for MySQL 6.60.

I just upgraded to Windows 8 / Visual Studio 2012 Dynamic Data and dotConnect for MySQL 7.20, and I'm sorry to say, I can't get it to work with inserts, updates, and deletes.

Unhandled exception at line 885, column 13 in
http://localhost:2274/ScriptResource.ax ... t=6119e399

0x800a139e - JavaScript runtime error: Sys.WebForms.PageRequestManagerServerErrorException: Row not found or changed.

Full projects pointing to a simple table with two columns have been uploaded as Request Support tickets with dotConnect for MySQL 7.20 builds 104 and 114.

Any tips?

Ron

MariiaI
Devart Team
Posts: 1472
Joined: Mon 13 Feb 2012 08:17

Re: Windows 8 Visual Studio 2012 Issues

Post by MariiaI » Tue 13 Nov 2012 13:25

Sorry for the delay. These are known issues. The fix will be available in the next build of dotConnect for MySQL, which we plan to release in several days. We will inform when it is available for download.

RonL
Posts: 7
Joined: Thu 08 Nov 2012 16:28

Re: Windows 8 Visual Studio 2012 Issues

Post by RonL » Tue 13 Nov 2012 16:32

Thank you for the reply.

The fast turn-around is much appreciated.

Kind regards,

Ron

MariiaI
Devart Team
Posts: 1472
Joined: Mon 13 Feb 2012 08:17

Re: Windows 8 Visual Studio 2012 Issues

Post by MariiaI » Fri 16 Nov 2012 07:28

New build of dotConnect for MySQL 7.2.122 is available for download now.
It can be downloaded from http://www.devart.com/dotconnect/mysql/download.html (trial version) or from Registered Users' Area (for users with valid subscription only).
For more information please refer to http://forums.devart.com/viewtopic.php?f=2&t=25286

RonL
Posts: 7
Joined: Thu 08 Nov 2012 16:28

Re: Windows 8 Visual Studio 2012 Issues

Post by RonL » Wed 21 Nov 2012 04:00

Hi Mariial,

Thank you for the latest build. Unfortunately, I'm seeing a new error when trying to Insert / Update / Delete on Windows 8 / Visual Studio 2012 (x64 machine).

Debug is below, and a full Visual Studio project with step-by-step pictures in a Word document has been uploaded to the "Request Support" tickets.

Please advise.

Kind regards,

Ron

Server Error in '/' Application.
________________________________________
Binary logging not possible. Message: Transaction level 'READ-COMMITTED' in InnoDB is not safe for binlog mode 'STATEMENT'
Description: An unhandled exception occurred during the execution of the current web request. Please review the stack trace for more information about the error and where it originated in the code.

Exception Details: Devart.Data.MySql.MySqlException: Binary logging not possible. Message: Transaction level 'READ-COMMITTED' in InnoDB is not safe for binlog mode 'STATEMENT'

Source Error:
An unhandled exception was generated during the execution of the current web request. Information regarding the origin and location of the exception can be identified using the exception stack trace below.

Stack Trace:

[MySqlException (0x80004005): Binary logging not possible. Message: Transaction level 'READ-COMMITTED' in InnoDB is not safe for binlog mode 'STATEMENT']
Devart.Data.MySql.am.t() +171
Devart.Data.MySql.am.d() +110
Devart.Data.MySql.bn.a(br[]& A_0, Int32& A_1) +79
Devart.Data.MySql.bn.a(Byte[] A_0, Int32 A_1, Boolean A_2) +76
Devart.Data.MySql.bs.e() +111
Devart.Data.MySql.bs.o() +36
Devart.Data.MySql.MySqlCommand.InternalExecute(CommandBehavior behavior, IDisposable stmt, Int32 startRecord, Int32 maxRecords) +1226
Devart.Common.DbCommandBase.InternalExecute(CommandBehavior behavior, IDisposable stmt, Int32 startRecord, Int32 maxRecords, Boolean nonQuery) +19
Devart.Common.DbCommandBase.ExecuteDbDataReader(CommandBehavior behavior, Boolean nonQuery) +441
Devart.Common.DbCommandBase.ExecuteDbDataReader(CommandBehavior behavior) +6
System.Data.Common.DbCommand.System.Data.IDbCommand.ExecuteReader() +12
Devart.Data.Linq.DataProvider.a(String A_0, IEnumerable`1 A_1, IEnumerable`1 A_2, Boolean A_3) +552

[LinqCommandExecutionException: Error on executing DbCommand.]
Devart.Data.Linq.LinqCommandExecutionException.CanThrowLinqCommandExecutionException(String message, Exception e) +59
Devart.Data.Linq.DataProvider.a(String A_0, IEnumerable`1 A_1, IEnumerable`1 A_2, Boolean A_3) +655
Devart.Data.Linq.DataProvider.b(String A_0, IEnumerable`1 A_1, IEnumerable`1 A_2, Boolean A_3) +71
Devart.Data.Linq.Engine.SubmitCommandBuilder.a(IObjectEntry A_0) +465
Devart.Data.Linq.Engine.an.a(IObjectEntry[] A_0, ConflictMode A_1, a A_2) +1550
Devart.Data.Linq.Engine.an.a(ConflictMode A_0) +140
Devart.Data.Linq.DataContext.SubmitChanges(ConflictMode failureMode) +923
Devart.Data.Linq.DataContext.SubmitChanges() +12
Devart.Data.Linq.Web.DbLinqDataSourceView.a(Object A_0) +43
Devart.Data.Linq.Web.DbLinqDataSourceView.InsertDataObject(Object dataContext, Object table, Object newDataObject) +37
System.Web.UI.WebControls.LinqDataSourceView.InsertObject(Object newEntity) +202
System.Web.UI.WebControls.QueryableDataSourceView.ExecuteInsert(IDictionary values) +106
System.Web.UI.WebControls.ContextDataSourceView.ExecuteInsert(IDictionary values) +88
System.Web.UI.WebControls.LinqDataSourceView.ExecuteInsert(IDictionary values) +29
System.Web.UI.DataSourceView.Insert(IDictionary values, DataSourceViewOperationCallback callback) +81
System.Web.UI.WebControls.FormView.HandleInsert(String commandArg, Boolean causesValidation) +364
System.Web.UI.WebControls.FormView.HandleEvent(EventArgs e, Boolean causesValidation, String validationGroup) +584
System.Web.UI.WebControls.FormView.OnBubbleEvent(Object source, EventArgs e) +89
System.Web.UI.Control.RaiseBubbleEvent(Object source, EventArgs args) +37
System.Web.UI.WebControls.FormViewRow.OnBubbleEvent(Object source, EventArgs e) +80
System.Web.UI.Control.RaiseBubbleEvent(Object source, EventArgs args) +37
System.Web.UI.WebControls.LinkButton.OnCommand(CommandEventArgs e) +121
System.Web.UI.WebControls.LinkButton.RaisePostBackEvent(String eventArgument) +156
System.Web.UI.WebControls.LinkButton.System.Web.UI.IPostBackEventHandler.RaisePostBackEvent(String eventArgument) +10
System.Web.UI.Page.RaisePostBackEvent(IPostBackEventHandler sourceControl, String eventArgument) +13
System.Web.UI.Page.RaisePostBackEvent(NameValueCollection postData) +9643314
System.Web.UI.Page.ProcessRequestMain(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint) +1724


________________________________________
Version Information: Microsoft .NET Framework Version:4.0.30319; ASP.NET Version:4.0.30319.18010

MariiaI
Devart Team
Posts: 1472
Joined: Mon 13 Feb 2012 08:17

Re: Windows 8 Visual Studio 2012 Issues

Post by MariiaI » Wed 21 Nov 2012 11:01

Thank you for the test project.
This error occurs in case the Binary Logging mode is set to STATEMENT and a transaction is started with isolation level set to READ COMMITTED. This isolation level is necessary for LINQ to SQL internal transactions. So, the solution is to set the binary logging to "ROW" or "MIXED".

For more information about binary logging please refer to http://dev.mysql.com/doc/refman/5.5/en/ ... rmats.html

If the previous variant is not possible, you could try using explicit transactions with the necessary Isolation Level.
For example:

Code: Select all

YourDataContext context = new YourDataContext();
context.Connection.Open();
// open transaction with some IsolationLevel
context.Transaction = context.Connection.BeginTransaction(System.Data.IsolationLevel.Serializable);
....
// make inserts, updates, deletes here
....
context.SubmitChanges();

// commit transaction
context.Transaction.Commit();
For more information please refer to:
http://www.devart.com/linqconnect/docs/ ... l#explicit

Please notify us about the results.

RonL
Posts: 7
Joined: Thu 08 Nov 2012 16:28

Re: Windows 8 Visual Studio 2012 Issues

Post by RonL » Wed 21 Nov 2012 23:04

Hi Mariial,

Thank you for the reply.

I was a bit confused on where to apply the following at the code level (willing to listen to more ideas), so I tried at the database level with partial success, partial failure.

The INSERTs / UPDATEs now work.

The DELETEs return the following, and the table rows have primary keys (PK).

Appreciate the progress. Any tips on DELETEs?

Ron


Row not found or changed.
Description: An unhandled exception occurred during the execution of the current web request. Please review the stack trace for more information about the error and where it originated in the code.

Exception Details: Devart.Data.Linq.ChangeConflictException: Row not found or changed.

Source Error:


An unhandled exception was generated during the execution of the current web request. Information regarding the origin and location of the exception can be identified using the exception stack trace below.

Stack Trace:



[ChangeConflictException: Row not found or changed.]
Devart.Data.Linq.Engine.an.a(IObjectEntry[] A_0, ConflictMode A_1, a A_2) +1545
Devart.Data.Linq.Engine.an.a(ConflictMode A_0) +140
Devart.Data.Linq.DataContext.SubmitChanges(ConflictMode failureMode) +923
Devart.Data.Linq.DataContext.SubmitChanges() +12
Devart.Data.Linq.Web.DbLinqDataSourceView.a(Object A_0) +43
Devart.Data.Linq.Web.DbLinqDataSourceView.DeleteDataObject(Object dataContext, Object table, Object oldDataObject) +64
System.Web.UI.WebControls.LinqDataSourceView.DeleteObject(Object oldEntity) +201
System.Web.UI.WebControls.QueryableDataSourceView.ExecuteDelete(IDictionary keys, IDictionary oldValues) +110
System.Web.UI.WebControls.ContextDataSourceView.ExecuteDelete(IDictionary keys, IDictionary oldValues) +88
System.Web.UI.WebControls.LinqDataSourceView.ExecuteDelete(IDictionary keys, IDictionary oldValues) +35
System.Web.UI.DataSourceView.Delete(IDictionary keys, IDictionary oldValues, DataSourceViewOperationCallback callback) +84
System.Web.UI.WebControls.GridView.HandleDelete(GridViewRow row, Int32 rowIndex) +930
System.Web.UI.WebControls.GridView.HandleEvent(EventArgs e, Boolean causesValidation, String validationGroup) +974
System.Web.UI.WebControls.GridView.OnBubbleEvent(Object source, EventArgs e) +89
System.Web.UI.Control.RaiseBubbleEvent(Object source, EventArgs args) +37
System.Web.UI.WebControls.GridViewRow.OnBubbleEvent(Object source, EventArgs e) +88
System.Web.UI.Control.RaiseBubbleEvent(Object source, EventArgs args) +37
System.Web.UI.WebControls.LinkButton.OnCommand(CommandEventArgs e) +121
System.Web.UI.WebControls.LinkButton.RaisePostBackEvent(String eventArgument) +156
System.Web.UI.WebControls.LinkButton.System.Web.UI.IPostBackEventHandler.RaisePostBackEvent(String eventArgument) +10
System.Web.UI.Page.RaisePostBackEvent(IPostBackEventHandler sourceControl, String eventArgument) +13
System.Web.UI.Page.RaisePostBackEvent(NameValueCollection postData) +9643314
System.Web.UI.Page.ProcessRequestMain(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint) +1724




--------------------------------------------------------------------------------
Version Information: Microsoft .NET Framework Version:4.0.30319; ASP.NET Version:4.0.30319.18010

MariiaI
Devart Team
Posts: 1472
Joined: Mon 13 Feb 2012 08:17

Re: Windows 8 Visual Studio 2012 Issues

Post by MariiaI » Fri 23 Nov 2012 12:32

I was a bit confused on where to apply the following at the code level (willing to listen to more ideas), so I tried at the database level with partial success, partial failure.
To be able to make the code above working for you, you could define the partial method OnCreate() for your DevartqaDataContext class by adding this code into it (e.g. the code with opening a transaction with some IsolationLevel).
To ensure that transactions are committed after submitting changes, you could extend the virtual method SubmitChanges() with the code that will commit the transaction.

As for the "Row not found or changed" exception, it occurs because Dynamic Data runtime fails to set the 'Id' property, as no setter method is defined. We will investigate it and inform you about the results.
To avoid it, please clear the "Read Only" check box for the "Id" property of the "DevartListTable" entity.

Please tell us if this helps.

RonL
Posts: 7
Joined: Thu 08 Nov 2012 16:28

Re: Windows 8 Visual Studio 2012 Issues

Post by RonL » Tue 27 Nov 2012 00:22

Hi Mariial,

Thank you for the replies.

A new Visual Studio 2012 Dynamic Data project using 7.2.122 has been uploaded into the "Request Support" area.

* To correct my earlier reply, it's the UPDATEs and DELETEs that are producing the "Row not found or changed".

This new project is using a new MySQL database with the desired Binary Logging mode and the appropriate properties for the Id column.

Any tips?

Kind regards,

Ron

MariiaI
Devart Team
Posts: 1472
Joined: Mon 13 Feb 2012 08:17

Re: Windows 8 Visual Studio 2012 Issues

Post by MariiaI » Tue 27 Nov 2012 10:32

Thank you for the sample project. As we have said earlier, the "Row not found or changed" exception occurs because Dynamic Data runtime fails to set the 'TestTableId' property, as no setter method is defined.
To avoid it, please clear the "Read Only" check box for the "TestTableId" property of the "TestTable" entity in your model (in the window, opened by double-clicking the "TestTableId" property).
JIC: we couldn't reproduce this issue after we have cleared the "Read Only" check box for the "TestTableId" property in your sample project.

Please tell us about the results.

RonL
Posts: 7
Joined: Thu 08 Nov 2012 16:28

Re: Windows 8 Visual Studio 2012 Issues

Post by RonL » Tue 27 Nov 2012 15:50

Hi Mariial,

Thank you for the reply.

* UPDATEs / DELETEs now work, after manually clearing the "Read Only" check box (or Read Only = False) for the primary key.

The surprise is that the "Read Only" is checked by default in 7.2.122 via "Entity Developer: Create Model Wizard" (with "Database First" checked) and "Update Model From Database..." (with "Recreate Model" checked).

My Devart request is hopefully a simple one:

* Would Devart be willing to uncheck the "Read Only" by default via "Entity Developer: Create Model Wizard" (with "Database First" checked) and "Update Model From Database..." (with "Recreate Model" checked) for primary keys? [Such would match the Windows Vista / Visual Studio 2010 Dynamic Data and dotConnect for MySQL 6.60 behavior.]

Kind regards,

Ron

MariiaI
Devart Team
Posts: 1472
Joined: Mon 13 Feb 2012 08:17

Re: Windows 8 Visual Studio 2012 Issues

Post by MariiaI » Wed 28 Nov 2012 15:35

Please make sure that after clearing the "Read Only" check box for the primary key ('TestTableId' property) you are saving the changes to the model and the code for it is re-generated.

As for the setting "Read Only" to 'true' for the auto generated values, this is the correct behavior for MySQL. The "Read Only" is always set to 'true' for autoincrement fields when creating a new model or updating an existing one with the "Recreate Model" option.
Please use the 'Update Model From Database' wizard without selecting the "Recreate Model" check box to retain manual changes you have made to your model and to select only the necessary changes to be applied.

RonL
Posts: 7
Joined: Thu 08 Nov 2012 16:28

Re: Windows 8 Visual Studio 2012 Issues

Post by RonL » Wed 28 Nov 2012 17:19

Hi Mariial,

Thank you for all your replies.

I consider this issue as successfully closed with the 7.2.122 release.

As for a future design request:

* The default behavior prevents DELETEs and UPDATEs with the Visual Studio 2012 "Entity Developer: Create Model Wizard" (with "Database First" checked) and "Update Model From Database..." (with "Recreate Model" checked). As a request, would Devart consider changing the default behavior to allow DELETEs and UPDATEs (setting Primary Keys to Read Only = False).

From a developer perspective, the Dynamic Data capabilities are really cool when they work. I was a bit lost on why the DELETEs and UPDATEs didn't work by default with 7.2.122 until your post.

Thank you again for all your replies.

Kind regards,

Ron

MariiaI
Devart Team
Posts: 1472
Joined: Mon 13 Feb 2012 08:17

Re: Windows 8 Visual Studio 2012 Issues

Post by MariiaI » Thu 29 Nov 2012 13:21

We have changed the behavior with setting autoincrement primary keys to Read Only = True by default. It will be included in the next build of dotConnect for MySQL. We will inform you when it is available for download.
As a workaround, you could clear the 'Read Only' check box for your autoincrement primary keys manually in the model.

MariiaI
Devart Team
Posts: 1472
Joined: Mon 13 Feb 2012 08:17

Re: Windows 8 Visual Studio 2012 Issues

Post by MariiaI » Fri 21 Dec 2012 08:14

New version of dotConnect for MySQL 7.3 is released!
It can be downloaded from http://www.devart.com/dotconnect/mysql/download.html (trial version) or from Registered Users' Area (for users with valid subscription only).
For more information, please refer to http://forums.devart.com/viewtopic.php?f=2&t=25517

Post Reply