/ / EntionFramework एक प्याज archetctured परियोजना में - सी #, asp.net-mvc, इकाई-ढांचे, asp.net-web-api, इकाई-ढांचे -6

एक प्याज archetctured परियोजना में EntityFramework - सी #, asp.net-mvc, इकाई-ढांचे, asp.net-web-api, इकाई-ढांचे -6

मेरे पास एक एएसपी.नेट वेबएपीआई 2 प्रोजेक्ट है जो निनजेक्ट को आईओसी के रूप में उपयोग करता है। मेरे पास एक कोर लेयर है कि मेरी सभी क्लास लाइब्रेरी प्रोजेक्ट्स का उपयोग होता है, और यह सामान्य इंटरफेस को परिभाषित करता है।

मेरे पास रिपोजिटरीज नामक एक परत है जहां मैंने अपना रखा हैएप्लिकेशन रिपॉजिटरीज, और डेटालेयर नामक एक परत जो विभिन्न इकाई फ्रेमवर्क डीबीकॉन्टेक्स्ट ऑब्जेक्ट्स को परिभाषित करती है। माई रेपॉजिटरीज़ लेयर में मेरे डेटालेयर का संदर्भ है, और डेटालेयर और रिपोजिटरीज लेयर I दोनों में मैंने एंटीटीफ्रेमवर्क जोड़ा है।

भंडारों के अंदर वर्गीकृत सभी भंडारपरत कोर से सामान्य इंटरफेस को कार्यान्वित कर रहे हैं, और एनआईजेक्ट का उपयोग करके एपीआई में contollers इंजेक्शन दिए जाते हैं। सबसे पहले, जब मैंने अपनी परियोजना को चलाया और भंडार के खिलाफ कुछ करने की कोशिश की, तो मुझे निम्न त्रुटि संदेश मिला:

An exception of type "System.InvalidOperationException" occurred in EntityFramework.dll but was not handled in user code

Additional information: No Entity Framework provider found for the ADO.NET provider with invariant name "System.Data.SqlClient". Make sure the provider is registered in the "entityFramework" section of the application config file. See http://go.microsoft.com/fwlink/?LinkId=260882 for more information.

मैंने जो किया वह ऐप.कॉन्फिग फ़ाइल को रिपॉजिटरी लेयर में खोलता है और एपीआई प्रोजेक्ट में एंटीटीफ्रेमवर्क डिफेंशंस को मेरे web.config पर कॉपी करता है:

<configSections>
<!-- For more information on Entity Framework configuration, visit http://go.microsoft.com/fwlink/?LinkID=237468 -->
<section name="entityFramework" type="System.Data.Entity.Internal.ConfigFile.EntityFrameworkSection, EntityFramework, Version=6.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" requirePermission="false" />
</configSections>

<entityFramework>
<defaultConnectionFactory type="System.Data.Entity.Infrastructure.LocalDbConnectionFactory, EntityFramework">
<parameters>
<parameter value="mssqllocaldb" />
</parameters>
</defaultConnectionFactory>
<providers>
<provider invariantName="System.Data.SqlClient" type="System.Data.Entity.SqlServer.SqlProviderServices, EntityFramework.SqlServer" />
</providers>
</entityFramework>

लेकिन अब मुझे निम्न त्रुटि मिलती है:

An exception of type "System.InvalidOperationException" occurred in mscorlib.dll but was not handled in user code

Additional information: The Entity Framework provider type "System.Data.Entity.SqlServer.SqlProviderServices, EntityFramework.SqlServer" registered in the application config file for the ADO.NET provider with invariant name "System.Data.SqlClient" could not be loaded. Make sure that the assembly-qualified name is used and that the assembly is available to the running application. See http://go.microsoft.com/fwlink/?LinkId=260882 for more information.

मुझे नहीं लगता कि समाधान भी शामिल हैएपीआई संदर्भों में इकाई ढांचे क्योंकि इससे चिंताओं को अलग करने में कमी आएगी - एपीआई को ध्यान नहीं देना चाहिए कि डेटा तक पहुंचने के लिए भंडारण द्वारा किस तकनीक का उपयोग किया जाता है - ताकि यदि एक महीने में कहें तो मैं अपना ओआरएम या यहां तक ​​कि बदलना चाहता हूं मेरे डीबी, एपीआई को परवाह नहीं करना चाहिए कि मैं किस प्रकार और कैसे उपयोग करता हूं, जब तक यह एक ही इंटरफेस का उपयोग करता है।

तब समस्या क्या है? मैं "ईएफ के लिए नया हूँ, तो मुझे लगता है कि मुझे कुछ याद आना चाहिए ...

उत्तर:

जवाब के लिए 0 № 1

आपका वेब कॉन्फ़िगर निश्चित रूप से कहीं गड़बड़ हो गया है। मैं .edmx को हटाने का प्रयास करता हूं और एक नया जोड़ने की कोशिश करता हूं। यह मेरी कॉन्फ़िगर की तरह दिखता है, यह सुनिश्चित नहीं है कि यह "मदद करेगा।

 <configSections>
<section name="entityFramework" type="System.Data.Entity.Internal.ConfigFile.EntityFrameworkSection, EntityFramework, Version=6.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" requirePermission="false" />
<!-- For more information on Entity Framework configuration, visit http://go.microsoft.com/fwlink/?LinkID=237468 -->
</configSections>

<entityFramework>
<defaultConnectionFactory type="System.Data.Entity.Infrastructure.LocalDbConnectionFactory, EntityFramework">
<parameters>
<parameter value="v11.0" /> //did you change this here?
</parameters>
</defaultConnectionFactory>
<providers>
<provider invariantName="System.Data.SqlClient" type="System.Data.Entity.SqlServer.SqlProviderServices, EntityFramework.SqlServer" />
</providers>
</entityFramework>
</configuration>

जवाब के लिए 0 № 2

एपीआई को ध्यान नहीं देना चाहिए कि डेटा तक पहुंचने के लिए भंडार द्वारा किस तकनीक का उपयोग किया जाता है

आपके पास एक एप्लिकेशन कॉन्फ़िगरेशन फ़ाइल और एक ऐपडोमेन है। दोनों को प्रासंगिक इकाई फ्रेमवर्क कॉन्फ़िगरेशन और असेंबली लोड होने की आवश्यकता है, क्योंकि आपके डीएएल में कोड की आवश्यकता होती है।

The कोड अपने वेब एपीआई shouldn "टी देखभाल, लेकिन आवेदन विंयास और होस्टिंग पर्यावरण कि से अलग हैं ।


जवाब के लिए 0 № 3

कृपया निकाय ढांचा फिर से संकुल प्रबंधक कंसोल से स्थापित करने के साथ प्रयास करें:

PM> Install-Package EntityFramework

यह तुंहारी समस्या का समाधान के रूप में एक ही मुद्दे मुझे एक बार सामना करना पड़ा था ।उंमीद है कि यह काम करता है । धन्यवाद