2012-11-29 11 views
7

के साथ एंटीटी फ्रेमवर्क/एसक्यूएल सर्वर कैसे सेट करें मैं मोनो एंटिटी फ्रेमवर्क क्षमताओं का मूल्यांकन करने के लिए एक बहुत ही सरल परीक्षण परियोजना स्थापित करने की कोशिश कर रहा हूं। डेटा तक पहुंचने का प्रयास करते समय, मुझे .NET रनटाइम का उपयोग करते समय मॉडल डेटा को पार्स करने के बारे में रनटाइम अपवाद मिलता है। मोनो रनटाइम का उपयोग करते समय, एक स्टैक ओवरफ्लो अपवाद फेंक दिया जाता है।मोनो

यह एक आंतरिक मोनो बग प्रतीत होता है जो CSDL स्कीमा संस्करण 3 संकलित करते समय होता है - Mono Bugtracker देखें।

तो मेरे सवाल है:

कैसे एक Microsoft SQL सर्वर के साथ काम करने इकाई की रूपरेखा के साथ मैं सेटअप मोनो करते हैं? चूंकि मुझे ज्यादा जानकारी नहीं मिली है, क्या यह भी संभव होना चाहिए? क्या आपने में से कोई भी ईएफ का उपयोग करके एक मोनो समाधान सफलतापूर्वक स्थापित किया था और इसी तरह की त्रुटियों में आया था?

  • स्थापित मोनो 3.0.1 बीटा EntityFramework.dll के लिए दृश्य स्टूडियो
  • Disabled strong name verification for delay signed assembilies के लिए (नवीनतम स्थिर शामिल नहीं है EntityFramework.dll)
  • सेटअप एक Mono Profile:

    यह मैं अब तक क्या किया है है/EntityFramework.SQLServer.dll और रनटाइम त्रुटियों को रोकने के लिए उन्हें GAC में जोड़ा

  • एक साधारण मॉडल + जोड़ा कोड जनरेशन आइटम
  • लिखे कोड मॉडल

कोड माइक्रोसॉफ्ट EntityFramework.dll (संस्करण 6, प्री-रिलीज़) के साथ काम करता इस्तेमाल करते हैं।

अपवाद संदेश (.NET रनटाइम):

वस्तु एक वस्तु का एक उदाहरण के लिए सेट नहीं संदर्भ मोनो बराबर का उपयोग करते समय की तरह वहाँ समस्याओं इकाई मॉडल पार्स करते समय कर रहे हैं लग रहा है।

स्टैकट्रेस (.NET रनटाइम):

at System.Xml.XmlTextReaderImpl.InitStreamInput(Uri baseUri, String baseUriStr, Stream stream, Byte[] bytes, Int32 byteCount, Encoding encoding) 
    at System.Xml.XmlTextReaderImpl..ctor(String url, Stream input, XmlNameTable nt) 
    at System.Xml.XmlTextReader..ctor(Stream input) 
    at System.Data.Entity.Core.EntityModel.SchemaObjectModel.Schema.SomSchemaSetHelper.AddXmlSchemaToSet(XmlSchemaSet schemaSet, XmlSchemaResource schemaResource, HashSet`1 schemasAlreadyAdded) 
    at System.Data.Entity.Core.EntityModel.SchemaObjectModel.Schema.SomSchemaSetHelper.AddXmlSchemaToSet(XmlSchemaSet schemaSet, XmlSchemaResource schemaResource, HashSet`1 schemasAlreadyAdded) 
    at System.Data.Entity.Core.EntityModel.SchemaObjectModel.Schema.SomSchemaSetHelper.ComputeSchemaSet(SchemaDataModelOption dataModel) 
    at System.Data.Entity.Core.Common.Utils.Memoizer`2.Result.GetValue() 
    at System.Data.Entity.Core.Common.Utils.Memoizer`2.Evaluate(TArg arg) 
    at System.Data.Entity.Core.EntityModel.SchemaObjectModel.Schema.SomSchemaSetHelper.GetSchemaSet(SchemaDataModelOption dataModel) 
    at System.Data.Entity.Core.EntityModel.SchemaObjectModel.Schema.Parse(XmlReader sourceReader, String sourceLocation) 
    at System.Data.Entity.Core.EntityModel.SchemaObjectModel.SchemaManager.ParseAndValidate(IEnumerable`1 xmlReaders, IEnumerable`1 sourceFilePaths, SchemaDataModelOption dataModel, AttributeValueNotification providerNotification, AttributeValueNotification providerManifestTokenNotification, ProviderManifestNeeded providerManifestNeeded, IList`1& schemaCollection) 
    at System.Data.Entity.Core.Metadata.Edm.StoreItemCollection.Loader.LoadItems(IEnumerable`1 xmlReaders, IEnumerable`1 sourceFilePaths) 
    at System.Data.Entity.Core.Metadata.Edm.StoreItemCollection.Init(IEnumerable`1 xmlReaders, IEnumerable`1 filePaths, Boolean throwOnError, DbProviderManifest& providerManifest, DbProviderFactory& providerFactory, String& providerManifestToken, Memoizer`2& cachedCTypeFunction) 
    at System.Data.Entity.Core.Metadata.Edm.StoreItemCollection..ctor(IEnumerable`1 xmlReaders, IEnumerable`1 filePaths) 
    at System.Data.Entity.Core.Metadata.Edm.MetadataCache.StoreMetadataEntry.LoadStoreCollection(EdmItemCollection edmItemCollection, MetadataArtifactLoader loader) 
    at System.Data.Entity.Core.Metadata.Edm.MetadataCache.LoadItemCollection[T](IItemCollectionLoader`1 itemCollectionLoader, T entry) 
    at System.Data.Entity.Core.Metadata.Edm.MetadataCache.GetOrCreateStoreAndMappingItemCollections(String cacheKey, MetadataArtifactLoader loader, EdmItemCollection edmItemCollection, Object& entryToken) 
    at System.Data.Entity.Core.EntityClient.EntityConnection.LoadStoreItemCollections(MetadataWorkspace workspace, DbConnection storeConnection, DbConnectionOptions connectionOptions, EdmItemCollection edmItemCollection, MetadataArtifactLoader artifactLoader) 
    at System.Data.Entity.Core.EntityClient.EntityConnection.GetMetadataWorkspace(Boolean initializeAllCollections) 
    at System.Data.Entity.Core.EntityClient.EntityConnection.InitializeMetadata(DbConnection newConnection, DbConnection originalConnection, Boolean closeOriginalConnectionOnFailure) 
    at System.Data.Entity.Core.EntityClient.EntityConnection.Open() 
    at System.Data.Entity.Core.Objects.ObjectContext.EnsureConnection() 
    at System.Data.Entity.Core.Objects.ObjectQuery`1.GetResults(Nullable`1 forMergeOption) 
    at System.Data.Entity.Core.Objects.ObjectQuery`1.<GetEnumerator>m__2C3() 
    at System.Lazy`1.CreateValue() 
    at System.Lazy`1.LazyInitValue() 
    at System.Data.Entity.Internal.LazyEnumerator`1.MoveNext() 
    at System.Linq.Enumerable.Single[TSource](IEnumerable`1 source) 
    at System.Linq.Queryable.Count[TSource](IQueryable`1 source) 
    at EntityFrameworkMono.Program.Main(String[] args) in c:\Users\Christopher Dresel\Documents\Visual Studio 2012\Projects\New\EntityFrameworkMono\EntityFrameworkMono\Program.cs:line 17 
    at System.AppDomain._nExecuteAssembly(RuntimeAssembly assembly, String[] args) 
    at Microsoft.VisualStudio.HostingProcess.HostProc.RunUsersAssembly() 
    at System.Threading.ExecutionContext.RunInternal(ExecutionContext executionContext, ContextCallback callback, Object state, Boolean preserveSyncCtx) 
    at System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state, Boolean preserveSyncCtx) 
    at System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state) 
    at System.Threading.ThreadHelper.ThreadStart() 

अपवाद संदेश (मोनो क्रम):

अनुरोध किया गया कार्य एक ढेर अतिप्रवाह का कारण बना।

स्टैकट्रेस (मोनो क्रम):

CustomerEntities entities = new CustomerEntities(); 
var count = entities.Customers.Count(); // Exception throws here 

Console.WriteLine(count); 
Console.ReadKey(); 

EDMX फ़ाइल

<?xml version="1.0" encoding="utf-8"?> 
<edmx:Edmx Version="3.0" xmlns:edmx="http://schemas.microsoft.com/ado/2009/11/edmx"> 
    <!-- EF Runtime content --> 
    <edmx:Runtime> 
     <!-- SSDL content --> 
     <edmx:StorageModels> 
      <Schema Namespace="CustomerModel.Store" Alias="Self" Provider="System.Data.SqlClient" ProviderManifestToken="2008" xmlns="http://schemas.microsoft.com/ado/2009/11/edm/ssdl"> 
       <EntityContainer Name="CustomerModelStoreContainer"> 
        <EntitySet Name="Customer" EntityType="CustomerModel.Store.Customer" store:Type="Tables" Schema="dbo" xmlns:store="http://schemas.microsoft.com/ado/2007/12/edm/EntityStoreSchemaGenerator" /> 
       </EntityContainer> 
       <EntityType Name="Customer"> 
        <Key> 
         <PropertyRef Name="CustomerID" /> 
        </Key> 
        <Property Name="CustomerID" Type="int" Nullable="false" StoreGeneratedPattern="Identity" /> 
        <Property Name="CustomerName" Type="nvarchar" Nullable="false" MaxLength="50" /> 
       </EntityType> 
      </Schema> 
     </edmx:StorageModels> 
     <!-- CSDL content --> 
     <edmx:ConceptualModels> 
      <Schema Namespace="CustomerModel" Alias="Self" annotation:UseStrongSpatialTypes="false" xmlns="http://schemas.microsoft.com/ado/2009/11/edm" xmlns:annotation="http://schemas.microsoft.com/ado/2009/02/edm/annotation"> 
       <EntityContainer Name="CustomerEntities" annotation:LazyLoadingEnabled="true"> 
        <EntitySet Name="Customers" EntityType="CustomerModel.Customer" /> 
       </EntityContainer> 
       <EntityType Name="Customer"> 
        <Key> 
         <PropertyRef Name="CustomerID" /> 
        </Key> 
        <Property Name="CustomerID" Type="Int32" Nullable="false" annotation:StoreGeneratedPattern="Identity" /> 
        <Property Name="CustomerName" Type="String" Nullable="false" MaxLength="50" Unicode="true" FixedLength="false" /> 
       </EntityType> 
      </Schema> 
     </edmx:ConceptualModels> 
     <!-- C-S mapping content --> 
     <edmx:Mappings> 
      <Mapping Space="C-S" xmlns="http://schemas.microsoft.com/ado/2009/11/mapping/cs"> 
       <EntityContainerMapping StorageEntityContainer="CustomerModelStoreContainer" CdmEntityContainer="CustomerEntities"> 
        <EntitySetMapping Name="Customers"> 
         <EntityTypeMapping TypeName="CustomerModel.Customer"> 
          <MappingFragment StoreEntitySet="Customer"> 
           <ScalarProperty Name="CustomerID" ColumnName="CustomerID" /> 
           <ScalarProperty Name="CustomerName" ColumnName="CustomerName" /> 
          </MappingFragment> 
         </EntityTypeMapping> 
        </EntitySetMapping> 
       </EntityContainerMapping> 
      </Mapping> 
     </edmx:Mappings> 
    </edmx:Runtime> 
</edmx:Edmx> 

और अंत में कनेक्शन स्ट्रिंग:

at System.Xml.Schema.XmlSchemaGroupBase.CheckRecursion (Int32 depth, System.Xml.Schema.ValidationEventHandler h, System.Xml.Schema.XmlSchema schema) [0x00000] in <filename unknown>:0 
    at System.Xml.Schema.XmlSchemaGroupBase.CheckRecursion (Int32 depth, System.Xml.Schema.ValidationEventHandler h, System.Xml.Schema.XmlSchema schema) [0x00000] in <filename unknown>:0 
    at System.Xml.Schema.XmlSchemaElement.CheckRecursion (Int32 depth, System.Xml.Schema.ValidationEventHandler h, System.Xml.Schema.XmlSchema schema) [0x00000] in <filename unknown>:0 
    at System.Xml.Schema.XmlSchemaGroupBase.CheckRecursion (Int32 depth, System.Xml.Schema.ValidationEventHandler h, System.Xml.Schema.XmlSchema schema) [0x00000] in <filename unknown>:0 
    at System.Xml.Schema.XmlSchemaGroupBase.CheckRecursion (Int32 depth, System.Xml.Schema.ValidationEventHandler h, System.Xml.Schema.XmlSchema schema) [0x00000] in <filename unknown>:0 
    at System.Xml.Schema.XmlSchemaElement.CheckRecursion (Int32 depth, System.Xml.Schema.ValidationEventHandler h, System.Xml.Schema.XmlSchema schema) [0x00000] in <filename unknown>:0 
    at System.Xml.Schema.XmlSchemaGroupBase.CheckRecursion (Int32 depth, System.Xml.Schema.ValidationEventHandler h, System.Xml.Schema.XmlSchema schema) [0x00000] in <filename unknown>:0 
    at System.Xml.Schema.XmlSchemaGroupBase.CheckRecursion (Int32 depth, System.Xml.Schema.ValidationEventHandler h, System.Xml.Schema.XmlSchema schema) [0x00000] in <filename unknown>:0 
... 

इस कोड मैं का उपयोग कर रहा है मैं उपयोग कर रहा हूँ:

<connectionStrings> 
    <add name="CustomerEntities" 
     connectionString="metadata=.\CustomerModel.csdl|.\CustomerModel.ssdl|.\CustomerModel.msl;provider=System.Data.SqlClient;provider connection string=&quot;data source=CHRISTOPHERPC\SQLExpress;initial catalog=test;integrated security=True;MultipleActiveResultSets=True;App=EntityFramework&quot;" 
     providerName="System.Data.EntityClient"/> 
</connectionStrings> 
+0

क्या आपने मोनो 2.11.3 या नए की कोशिश की? –

+0

मैंने इसे http://www.go-mono.com/mono-downloads/download.html से मोनो 3.0.1 बीटा के साथ करने की कोशिश की - अब एक नया संस्करण है (3.0.2), मैं इसे फिर से कोशिश करूंगा इस संस्करण के साथ और मेरे परिणाम पोस्ट करें। – Dresel

+0

3.0.2 का उपयोग करते समय वही त्रुटियां ... – Dresel

उत्तर

5

Dresel, मेरी प्रतिष्ठा इस साइट पर हो सकता है के रूप में भ्रामक, मैं सुरक्षित रूप से कह सकते हैं कि मोनो के साथ EntityFramework का उपयोग कर इस समय दृष्टिकोण की सिफारिश नहीं है। यद्यपि यह तकनीकी रूप से "समर्थित" है, लेकिन अधिकांश पुस्तकालय गैर-कार्यात्मक नहीं है। जहां तक ​​मैं जा सकता था, लगभग एक महीने तक खुदाई करने के बाद, मैं% 20 से ऊपर पूरी तरह से काम करने वाली साइट बनाने की संभावना को दूर करने में असमर्थ था। मैंने इसके बजाय NHibernate का उपयोग किया और परिणाम से रोमांचित हो गए हैं। और जब तक ईएफ मोनो प्रोजेक्ट के लिए आधार मजबूत नहीं हो जाता तब तक ऐसा करने की सलाह दें। Nhibernate Example (using MySQL, MSSQL supported)

मुझे उम्मीद है कि यह कम से कम थोड़ा सा मदद करता है क्योंकि यह केवल मेरा ईमानदार विचार है। जो कुछ भी आप करना चाहते हैं उस पर शुभकामनाएं, मुझे पता है कि यह एमएस ओपनसॉर्स चाल बहुत "रोडब्लॉकी" प्राप्त कर सकता है

+0

सिर्फ उत्सुक - जब आप "गैर-कार्यात्मक लाइब्रेरी" कहते हैं, तो क्या आप नवीनतम मोनो संस्करण (3.x) के बारे में बात कर रहे हैं? –

+0

मेरी टीम और मैं दिसंबर के अंत तक उबंटू और सभी नवीनतम सॉफ्टवेयर चला रहा हूं। वे पुस्तकालयों में खिड़कियों में संकलन करते हैं, लेकिन उस समय कुछ चीजें जरूरी नहीं थीं। – Chazt3n

+0

ठीक है, बहुत धन्यवाद। –