I got it working. I'll briefly describe the steps I went through in case someone else finds themselves in a similar situation.
For comparison, I created a new blank project and created an Entity model of my database from scratch using dotConnect.
I copied the Provider and ProviderManifestToken from the StorageModel in the new EDMX into my old one. That caused Visual Studio to stop displaying the model.
Looking at the EDMX in the XML editor, there were errors like the following
Code: Select all
Type bool is not qualified with a namespace or alias. Only primitive types can be used without qualification.
Those errors had been there before with Connector/Net and everything still worked, so I was used to ignoring them.
Comparing to the new model, I saw dotConnect had assigned those fields a type of "sbyte" so I changed bool to sbyte throughout my existing model. That allowed the diagram to load, but created new errors:
Code: Select all
Member Mapping specified is not valid. The type 'Edm.Boolean[Nullable=False,DefaultValue=]' of member 'IsDeleted' in type 'MyNamespace.MyType' is not compatible with 'Devart.Data.MySql.sbyte[Nullable=False,DefaultValue=]' of member 'IsDeleted' in type 'MyNamespace.Store.MyType'
By some luck, there was exactly one boolean column in my schema that had been declared the way dotConnect apparently wants it to be declared so I was able to determine a) dotConnect has a boolean (not bool) type and b) the corresponding column has to be declared as bit(1) NOT bool.
Big enhancement opportunity DevArt -- recognize tinyint(1) as a boolean when updating the model from the database. Especially since dbFusion for MySQL will take fields declared as bool, and send them over to the server as bool, but they won't be recognized by dotConnect when the server sends them back as tinyint(1).