yw - it still seems like some xml schema issue, namely PSVI handling in XmlSchemaValidatingReader (ok, less than 0.1% of people understand it).

In case you don't mind patching EF, here is mine that goes beyond that issue.

Atsushi Eno

Олег wrote:
Many thanks to Atsushi Eno for a solution for previous defect in System.Xml.

But there are new issues with EF. I tried to create simplest console application (file Test.zip attached to this letter, contains MonoDevelop project), it fails with following exception:

System.ArgumentException: An element with the same key already exists in the dictionary. at System.Collections.Generic.Dictionary`2[System.String,System.Object].Add (System.String key, System.Object value) [0x0007e] in /usr/ports/lang/mono/work/mono-3.0.3/mcs/class/corlib/System.Collections.Generic/Dictionary.cs:423 at System.Data.Entity.Core.EntityModel.SchemaObjectModel.TypeUsageBuilder.HandleNullableAttribute (System.Xml.XmlReader reader) [0x00015] in /usr/ports/lang/mono/work/mono-3.0.3/external/entityframework/src/EntityFramework/Core/EntityModel/SchemaObjectModel/TypeUsageBuilder.cs:605 at System.Data.Entity.Core.EntityModel.SchemaObjectModel.TypeUsageBuilder.InternalHandleAttribute (System.Xml.XmlReader reader) [0x00010] in /usr/ports/lang/mono/work/mono-3.0.3/external/entityframework/src/EntityFramework/Core/EntityModel/SchemaObjectModel/TypeUsageBuilder.cs:300 at System.Data.Entity.Core.EntityModel.SchemaObjectModel.TypeUsageBuilder.HandleAttribute (System.Xml.XmlReader reader) [0x00000] in /usr/ports/lang/mono/work/mono-3.0.3/external/entityframework/src/EntityFramework/Core/EntityModel/SchemaObjectModel/TypeUsageBuilder.cs:291 at System.Data.Entity.Core.EntityModel.SchemaObjectModel.StructuredProperty.HandleAttribute (System.Xml.XmlReader reader) [0x00040] in /usr/ports/lang/mono/work/mono-3.0.3/external/entityframework/src/EntityFramework/Core/EntityModel/SchemaObjectModel/StructuredProperty.cs:227 at System.Data.Entity.Core.EntityModel.SchemaObjectModel.SchemaElement.ParseAttribute (System.Xml.XmlReader reader) [0x0006a] in /usr/ports/lang/mono/work/mono-3.0.3/external/entityframework/src/EntityFramework/Core/EntityModel/SchemaObjectModel/SchemaElement.cs:592 at System.Data.Entity.Core.EntityModel.SchemaObjectModel.SchemaElement.Parse (System.Xml.XmlReader reader) [0x0001d] in /usr/ports/lang/mono/work/mono-3.0.3/external/entityframework/src/EntityFramework/Core/EntityModel/SchemaObjectModel/SchemaElement.cs:193 at System.Data.Entity.Core.EntityModel.SchemaObjectModel.StructuredType.HandlePropertyElement (System.Xml.XmlReader reader) [0x00007] in /usr/ports/lang/mono/work/mono-3.0.3/external/entityframework/src/EntityFramework/Core/EntityModel/SchemaObjectModel/StructuredType.cs:387 at System.Data.Entity.Core.EntityModel.SchemaObjectModel.StructuredType.HandleElement (System.Xml.XmlReader reader) [0x0001f] in /usr/ports/lang/mono/work/mono-3.0.3/external/entityframework/src/EntityFramework/Core/EntityModel/SchemaObjectModel/StructuredType.cs:267 at System.Data.Entity.Core.EntityModel.SchemaObjectModel.SchemaEntityType.HandleElement (System.Xml.XmlReader reader) [0x00000] in /usr/ports/lang/mono/work/mono-3.0.3/external/entityframework/src/EntityFramework/Core/EntityModel/SchemaObjectModel/ItemType.cs:198 at System.Data.Entity.Core.EntityModel.SchemaObjectModel.SchemaElement.ParseElement (System.Xml.XmlReader reader) [0x0002c] in /usr/ports/lang/mono/work/mono-3.0.3/external/entityframework/src/EntityFramework/Core/EntityModel/SchemaObjectModel/SchemaElement.cs:746 at System.Data.Entity.Core.EntityModel.SchemaObjectModel.SchemaElement.Parse (System.Xml.XmlReader reader) [0x000d0] in /usr/ports/lang/mono/work/mono-3.0.3/external/entityframework/src/EntityFramework/Core/EntityModel/SchemaObjectModel/SchemaElement.cs:220 at System.Data.Entity.Core.EntityModel.SchemaObjectModel.Schema.HandleEntityTypeElement (System.Xml.XmlReader reader) [0x00007] in /usr/ports/lang/mono/work/mono-3.0.3/external/entityframework/src/EntityFramework/Core/EntityModel/SchemaObjectModel/Schema.cs:1023 at System.Data.Entity.Core.EntityModel.SchemaObjectModel.Schema.HandleElement (System.Xml.XmlReader reader) [0x0001f] in /usr/ports/lang/mono/work/mono-3.0.3/external/entityframework/src/EntityFramework/Core/EntityModel/SchemaObjectModel/Schema.cs:592 at System.Data.Entity.Core.EntityModel.SchemaObjectModel.SchemaElement.ParseElement (System.Xml.XmlReader reader) [0x0002c] in /usr/ports/lang/mono/work/mono-3.0.3/external/entityframework/src/EntityFramework/Core/EntityModel/SchemaObjectModel/SchemaElement.cs:746 at System.Data.Entity.Core.EntityModel.SchemaObjectModel.SchemaElement.Parse (System.Xml.XmlReader reader) [0x000d0] in /usr/ports/lang/mono/work/mono-3.0.3/external/entityframework/src/EntityFramework/Core/EntityModel/SchemaObjectModel/SchemaElement.cs:220 at System.Data.Entity.Core.EntityModel.SchemaObjectModel.Schema.HandleTopLevelSchemaElement (System.Xml.XmlReader reader) [0x0000e] in /usr/ports/lang/mono/work/mono-3.0.3/external/entityframework/src/EntityFramework/Core/EntityModel/SchemaObjectModel/Schema.cs:1005 at System.Data.Entity.Core.EntityModel.SchemaObjectModel.Schema.InternalParse (System.Xml.XmlReader sourceReader, System.String sourceLocation) [0x0021e] in /usr/ports/lang/mono/work/mono-3.0.3/external/entityframework/src/EntityFramework/Core/EntityModel/SchemaObjectModel/Schema.cs:210 at System.Data.Entity.Core.EntityModel.SchemaObjectModel.Schema.Parse (System.Xml.XmlReader sourceReader, System.String sourceLocation) [0x0000f] in /usr/ports/lang/mono/work/mono-3.0.3/external/entityframework/src/EntityFramework/Core/EntityModel/SchemaObjectModel/Schema.cs:100 at System.Data.Entity.Core.EntityModel.SchemaObjectModel.SchemaManager.ParseAndValidate (IEnumerable`1 xmlReaders, IEnumerable`1 sourceFilePaths, SchemaDataModelOption dataModel, System.Data.Entity.Core.EntityModel.SchemaObjectModel.AttributeValueNotification providerNotification, System.Data.Entity.Core.EntityModel.SchemaObjectModel.AttributeValueNotification providerManifestTokenNotification, System.Data.Entity.Core.EntityModel.SchemaObjectModel.ProviderManifestNeeded providerManifestNeeded, IList`1& schemaCollection) [0x0008a] in /usr/ports/lang/mono/work/mono-3.0.3/external/entityframework/src/EntityFramework/Core/EntityModel/SchemaObjectModel/SchemaManager.cs:152 at System.Data.Entity.Core.EntityModel.SchemaObjectModel.SchemaManager.ParseAndValidate (IEnumerable`1 xmlReaders, IEnumerable`1 sourceFilePaths, SchemaDataModelOption dataModel, System.Data.Entity.Core.Common.DbProviderManifest providerManifest, IList`1& schemaCollection) [0x0000d] in /usr/ports/lang/mono/work/mono-3.0.3/external/entityframework/src/EntityFramework/Core/EntityModel/SchemaObjectModel/SchemaManager.cs:102 at System.Data.Entity.Core.Metadata.Edm.EdmItemCollection.LoadItems (IEnumerable`1 xmlReaders, IEnumerable`1 sourceFilePaths, SchemaDataModelOption dataModelOption, System.Data.Entity.Core.Common.DbProviderManifest providerManifest, System.Data.Entity.Core.Metadata.Edm.ItemCollection itemCollection, Boolean throwOnError) [0x00002] in /usr/ports/lang/mono/work/mono-3.0.3/external/entityframework/src/EntityFramework/Core/Metadata/EdmItemCollection.cs:245 at System.Data.Entity.Core.Metadata.Edm.EdmItemCollection.Init (IEnumerable`1 xmlReaders, IEnumerable`1 filePaths, Boolean throwOnError) [0x00006] in /usr/ports/lang/mono/work/mono-3.0.3/external/entityframework/src/EntityFramework/Core/Metadata/EdmItemCollection.cs:126 at System.Data.Entity.Core.Metadata.Edm.EdmItemCollection..ctor (IEnumerable`1 xmlReaders, IEnumerable`1 filePaths, Boolean skipInitialization) [0x00023] in /usr/ports/lang/mono/work/mono-3.0.3/external/entityframework/src/EntityFramework/Core/Metadata/EdmItemCollection.cs:41 at System.Data.Entity.Core.Metadata.Edm.MetadataCache+EdmMetadataEntry.LoadEdmItemCollection (System.Data.Entity.Core.Metadata.Edm.MetadataArtifactLoader loader) [0x00008] in /usr/ports/lang/mono/work/mono-3.0.3/external/entityframework/src/EntityFramework/Core/Metadata/MetadataCache.cs:653 at System.Data.Entity.Core.Metadata.Edm.MetadataCache+EdmItemCollectionLoader.LoadItemCollection (System.Data.Entity.Core.Metadata.Edm.EdmMetadataEntry entry) [0x00000] in /usr/ports/lang/mono/work/mono-3.0.3/external/entityframework/src/EntityFramework/Core/Metadata/MetadataCache.cs:834 at System.Data.Entity.Core.Metadata.Edm.MetadataCache.LoadItemCollection[EdmMetadataEntry] (IItemCollectionLoader`1 itemCollectionLoader, System.Data.Entity.Core.Metadata.Edm.EdmMetadataEntry entry) [0x00037] in /usr/ports/lang/mono/work/mono-3.0.3/external/entityframework/src/EntityFramework/Core/Metadata/MetadataCache.cs:367 at System.Data.Entity.Core.Metadata.Edm.MetadataCache.GetOrCreateEdmItemCollection (System.String cacheKey, System.Data.Entity.Core.Metadata.Edm.MetadataArtifactLoader loader, System.Object& entryToken) [0x00020] in /usr/ports/lang/mono/work/mono-3.0.3/external/entityframework/src/EntityFramework/Core/Metadata/MetadataCache.cs:273 at System.Data.Entity.Core.EntityClient.EntityConnection.LoadEdmItemCollection (System.Data.Entity.Core.Metadata.Edm.MetadataWorkspace workspace, System.Data.Entity.Core.Metadata.Edm.MetadataArtifactLoader artifactLoader) [0x0000f] in /usr/ports/lang/mono/work/mono-3.0.3/external/entityframework/src/EntityFramework/Core/EntityClient/EntityConnection.cs:1053 at System.Data.Entity.Core.EntityClient.EntityConnection.GetMetadataWorkspace (Boolean initializeAllCollections) [0x000b6] in /usr/ports/lang/mono/work/mono-3.0.3/external/entityframework/src/EntityFramework/Core/EntityClient/EntityConnection.cs:467 at System.Data.Entity.Core.Objects.ObjectContext.RetrieveMetadataWorkspaceFromConnection () [0x00017] in /usr/ports/lang/mono/work/mono-3.0.3/external/entityframework/src/EntityFramework/Core/Objects/ObjectContext.cs:1839 at System.Data.Entity.Core.Objects.ObjectContext..ctor (System.Data.Entity.Core.EntityClient.EntityConnection connection, Boolean isConnectionConstructor, System.Data.Entity.Core.Objects.Internal.ObjectQueryExecutionPlanFactory objectQueryExecutionPlanFactory, System.Data.Entity.Core.Common.Internal.Materialization.Translator translator) [0x000bc] in /usr/ports/lang/mono/work/mono-3.0.3/external/entityframework/src/EntityFramework/Core/Objects/ObjectContext.cs:192 at System.Data.Entity.Core.Objects.ObjectContext..ctor (System.String connectionString) [0x00000] in /usr/ports/lang/mono/work/mono-3.0.3/external/entityframework/src/EntityFramework/Core/Objects/ObjectContext.cs:114 at System.Data.Entity.Core.Objects.ObjectContext..ctor (System.String connectionString, System.String defaultContainerName) [0x00000] in /usr/ports/lang/mono/work/mono-3.0.3/external/entityframework/src/EntityFramework/Core/Objects/ObjectContext.cs:134 at TestModel.TestEntities..ctor () [0x00000] in /home/Test/Test/TestModel.Designer.cs:46 at Test.Program.Main (System.String[] args) [0x00001] in /home/Test/Test/Program.cs:11

Honestly, I'm going to investigate and probably rewrite my code to NHibernate, but if this sample project will be useful for someone who will try to make support of Entity Framework on Mono better, I would be glad to know it.

With best regards,
Oleg


_______________________________________________
Mono-devel-list mailing list
Mono-devel-list@lists.ximian.com
http://lists.ximian.com/mailman/listinfo/mono-devel-list

diff --git a/src/EntityFramework/Core/EntityModel/SchemaObjectModel/Schema.cs b/src/EntityFramework/Core/EntityModel/SchemaObjectModel/Schema.cs
index 18f232b..3ecb74f 100644
--- a/src/EntityFramework/Core/EntityModel/SchemaObjectModel/Schema.cs
+++ b/src/EntityFramework/Core/EntityModel/SchemaObjectModel/Schema.cs
@@ -96,7 +96,8 @@ namespace System.Data.Entity.Core.EntityModel.SchemaObjectModel
                 // user specified a stream to read from, read from it.
                 // The Uri is just used to identify the stream in errors.
                 var readerSettings = CreateXmlReaderSettings();
-                var wrappedReader = XmlReader.Create(sourceReader, readerSettings);
+				readerSettings.ValidationType = ValidationType.None;
+				var wrappedReader = XmlReader.Create(sourceReader, readerSettings);
                 return InternalParse(wrappedReader, sourceLocation);
             }
             catch (IOException ex)
diff --git a/src/EntityFramework/Core/EntityModel/SchemaObjectModel/Utils.cs b/src/EntityFramework/Core/EntityModel/SchemaObjectModel/Utils.cs
index d8fb303..e91726d 100644
--- a/src/EntityFramework/Core/EntityModel/SchemaObjectModel/Utils.cs
+++ b/src/EntityFramework/Core/EntityModel/SchemaObjectModel/Utils.cs
@@ -100,7 +100,7 @@ namespace System.Data.Entity.Core.EntityModel.SchemaObjectModel
             Debug.Assert(schema != null, "schema parameter is null");
             Debug.Assert(reader != null, "reader parameter is null");
 
-            if (reader.SchemaInfo.Validity
+			if (reader.SchemaInfo != null && reader.SchemaInfo.Validity
                 == XmlSchemaValidity.Invalid)
             {
                 // an error has already been issued by the xsd validation
@@ -175,7 +175,7 @@ namespace System.Data.Entity.Core.EntityModel.SchemaObjectModel
             Debug.Assert(schema != null, "schema parameter is null");
             Debug.Assert(reader != null, "reader parameter is null");
 
-            if (reader.SchemaInfo.Validity
+			if (reader.SchemaInfo != null && reader.SchemaInfo.Validity
                 == XmlSchemaValidity.Invalid)
             {
                 // the xsd already put in an error
@@ -241,7 +241,7 @@ namespace System.Data.Entity.Core.EntityModel.SchemaObjectModel
             Debug.Assert(schema != null, "schema parameter is null");
             Debug.Assert(reader != null, "reader parameter is null");
 
-            if (reader.SchemaInfo.Validity
+			if (reader.SchemaInfo != null && reader.SchemaInfo.Validity
                 == XmlSchemaValidity.Invalid)
             {
                 value = true; // we have to set the value to something before returning.
_______________________________________________
Mono-devel-list mailing list
Mono-devel-list@lists.ximian.com
http://lists.ximian.com/mailman/listinfo/mono-devel-list

Reply via email to