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