সত্তা ফ্রেমওয়ার্ক সরবরাহকারীর প্রকারটি লোড করা যায়নি?


420

আমি বর্তমানে আমার মেশিনে ইনস্টল থাকা টিমসিটিতে আমার পরীক্ষা চালানোর চেষ্টা করছি।

System.InvalidOperationException:

সত্তা ফ্রেমওয়ার্ক সরবরাহকারীর ধরণ ' System.Data.Entity.SqlServer.SqlProviderServices, EntityFramework.SqlServer, Version=6.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089'' System.Data.SqlClient'এর জন্য ADO.NET সরবরাহকারী লোড করা যায়নি। চলমান অ্যাপ্লিকেশনটিতে সরবরাহকারীর সমাবেশ উপলব্ধ রয়েছে তা নিশ্চিত করুন।

আরও তথ্যের জন্য দেখুন http://go.microsoft.com/fwlink/?LinkId=260882 ..

System.Data.EntityEF6 এ আপগ্রেড করার জন্য কোডপ্লেক্সে প্রস্তাবিত মতো আমার কোনও প্রকল্পে আমার কোনও রেফারেন্স নেই ।

সুতরাং, কেন আমি এই ব্যতিক্রম পাচ্ছি তা আমি নিশ্চিত নই। আমি যখন ভিএস থেকে পরীক্ষা চালাচ্ছি তখন আমি এ জাতীয় কোনও ব্যতিক্রম পাই না

আমি কপিরলোকালকে মিথ্যাতে আবার সত্যে সেট করার চেষ্টা করেছি .. তবে এটিও কার্যকর হবে বলে মনে হয় না।

হালনাগাদ

আমার app.config নিম্নলিখিত রয়েছে। এর ফলে এমন কিছু আচরণ ঘটে যা আমি বুঝতে পারি না?

<?xml version="1.0" encoding="utf-8"?>
<configuration>
  <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.SqlConnectionFactory, EntityFramework" />
  </entityFramework>
</configuration>

আমি টিমসিটিতে নিম্নলিখিত স্ট্যাকট্রেস পেয়েছি।

[MSTest] IntegrationTests.CrudTest+QuestionTest.Create
[03:59:11][IntegrationTests.CrudTest+QuestionTest.Create] Initialization method IntegrationTests.CrudTest+QuestionTest.Initialize threw exception. System.InvalidOperationException: System.InvalidOperationException: The Entity Framework provider type 'System.Data.Entity.SqlServer.SqlProviderServices, EntityFramework.SqlServer, Version=6.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089' for the 'System.Data.SqlClient' ADO.NET provider could not be loaded. Make sure the provider assembly is available to the running application. See http://go.microsoft.com/fwlink/?LinkId=260882 for more information..
[03:59:11]
[IntegrationTests.CrudTest+QuestionTest.Create]     at System.Data.Entity.Config.ProviderServicesFactory.GetInstance(String providerTypeName, String providerInvariantName)
   at System.Data.Entity.Config.ProviderServicesFactory.GetInstanceByConvention(String providerInvariantName)
   at System.Data.Entity.Config.DefaultProviderServicesResolver.GetService(Type type, Object key)
   at System.Data.Entity.Config.CachingDependencyResolver.<>c__DisplayClass1.<GetService>b__0(Tuple`2 k)
   at System.Collections.Concurrent.ConcurrentDictionary`2.GetOrAdd(TKey key, Func`2 valueFactory)
   at System.Data.Entity.Config.CachingDependencyResolver.GetService(Type type, Object key)
   at System.Data.Entity.Config.ResolverChain.<>c__DisplayClass3.<GetService>b__0(IDbDependencyResolver r)
   at System.Linq.Enumerable.WhereSelectArrayIterator`2.MoveNext()
   at System.Linq.Enumerable.FirstOrDefault[TSource](IEnumerable`1 source, Func`2 predicate)
   at System.Data.Entity.Config.ResolverChain.GetService(Type type, Object key)
   at System.Data.Entity.Config.RootDependencyResolver.GetService(Type type, Object key)
   at System.Data.Entity.Config.ResolverChain.<>c__DisplayClass3.<GetService>b__0(IDbDependencyResolver r)
   at System.Linq.Enumerable.WhereSelectArrayIterator`2.MoveNext()
   at System.Linq.Enumerable.FirstOrDefault[TSource](IEnumerable`1 source, Func`2 predicate)
   at System.Data.Entity.Config.ResolverChain.GetService(Type type, Object key)
   at System.Data.Entity.Config.CompositeResolver`2.GetService(Type type, Object key)
   at System.Data.Entity.Config.IDbDependencyResolverExtensions.GetService[T](IDbDependencyResolver resolver, Object key)
   at System.Data.Entity.Config.InternalConfiguration.GetService[TService](Object key)
   at System.Data.Entity.Config.DbConfiguration.GetService[TService](Object key)
   at System.Data.Entity.Utilities.DbProviderFactoryExtensions.GetProviderServices(DbProviderFactory factory)
   at System.Data.Entity.Infrastructure.DefaultManifestTokenService.GetProviderManifestToken(DbConnection connection)
   at System.Data.Entity.Utilities.DbConnectionExtensions.GetProviderInfo(DbConnection connection, DbProviderManifest& providerManifest)
   at System.Data.Entity.DbModelBuilder.Build(DbConnection providerConnection)
   at System.Data.Entity.Internal.LazyInternalContext.CreateModel(LazyInternalContext internalContext)
   at System.Data.Entity.Internal.RetryLazy`2.GetValue(TInput input)
   at System.Data.Entity.Internal.LazyInternalContext.InitializeContext()
   at System.Data.Entity.Internal.InternalContext.GetEntitySetAndBaseTypeForType(Type entityType)
   at System.Data.Entity.Internal.Linq.InternalSet`1.Initialize()
   at System.Data.Entity.Internal.Linq.InternalSet`1.get_InternalContext()
   at System.Data.Entity.Internal.Linq.InternalSet`1.ActOnSet(Action action, EntityState newState, Object entity, String methodName)
   at System.Data.Entity.Internal.Linq.InternalSet`1.Add(Object entity)
   at System.Data.Entity.DbSet`1.Add(TEntity entity)
   at EFRepository.Infrastructure.EFRepository`1.Add(T item) in c:\TeamCity\buildAgent\work\da2ea4e72c0e77f0\Repository\Infrastructure\EFRepository.cs:line 22
   at IntegrationTests.CrudTest.Initialize() in c:\TeamCity\buildAgent\work\da2ea4e72c0e77f0\IntegrationTests\CrudTest.cs:line 34

1
এন্টিফ্রেম ওয়ার্ক.ডিল কি এন্টিফ্রেমওয়ার্ক.ডিলের সাথে স্থাপন করা আছে? পূর্ববর্তী সংস্করণগুলির মতো EF6 স্কেলসার্ভার এবং স্কেলসার্ভারের সরবরাহকারীরা EF ইঞ্জিনের মতো একই সমাবেশে নেই। আপনার সিস্টেমে একটি রেফারেন্স যুক্ত করা উচিত নয় ata ডেটা.এন্টি.ডিল ll EF6 এর সরবরাহকারীর মডেল EF5 এর তুলনায় পরিবর্তিত হয়েছে এবং EF5 সরবরাহকারী কেবল কাজ করবে না। এছাড়াও আপনি কয়েকটি জটিল সমস্যা হিট করতে পারেন (যেমন EF5 জিওপ্যাটিয়াল প্রকার যেমন EF6 এ সত্তার প্রকার হিসাবে বিবেচিত)
পাওয়েল

হ্যাঁ আমি ডাবল চেক করে দেখেছি সিস্টেম.ডাটা.এন্টিটির কোনও রেফারেন্স নেই এবং এন্টিফ্রেমওয়ার্ক.ডিল এবং এন্টি ফ্রেমওয়ার্ক.এসএইচএল সার্ভার.ডেল উভয়ের উল্লেখ রয়েছে। আবার প্রোজেটক সংকলন এবং পরীক্ষাগুলি ভিএস-তে চালিত হয় আমি যখন টিমসিটিতে পরীক্ষা চালাই তখনই ত্রুটিটি ফেটে যায়।
আশুতোষ রায়না

এটি একটি সঠিক সেটআপ। আমি টিমসিটি ব্যবহার করি নি তবে এটি আমার কাছে উপস্থিত হয় যে যখন আপনার অ্যাপটি টিমসিটি দিয়ে পরীক্ষা চালানোর জন্য স্থাপন করা হবে সত্তা ফ্রেমওয়ার্ক.সক্ল্যাওয়ার সার্ভার.ডিল অনুপস্থিত এবং তাই ব্যতিক্রম।
পাভেল

1
এই পোস্ট থেকে উত্তর দেখুন: stackoverflow.com/questions/21175713/… আমি private volatile Type _dependency...উত্তর যুক্ত করেছি এবং এটি কার্যকর! এটি কেবল দুর্গন্ধযুক্ত যে EF টিমসিটিতে কাজ করার জন্য আমাকে এই জাতীয় একটি পৃথক শ্রেণি যুক্ত করতে হবে।
স্মাইল 15

2
আমি নুগেট প্যাকেজগুলি থেকে অ্যান্টিটি ফ্রেমওয়ার্কটি আনইনস্টল করে আবার ইনস্টল করেছিলাম এবং এটি স্থির হয়ে যায়
অভ্যুদয়াসরনেট

উত্তর:


426

একই সমস্যা, তবে আমি নুগেটের মাধ্যমে EF 6 ইনস্টল করেছি। সত্তা ফ্রেমওয়ার্ক.সক্ল্যাওয়ার সার্ভার অন্য কার্যকর করার জন্য নিখোঁজ ছিল। আমি কেবল সেই প্রকল্পে নুগেট প্যাকেজ যুক্ত করেছি।


108
আমি এটিও লক্ষ্য করেছি। আপনি যদি EF ব্যবহার করে এমন একটি লাইব্রেরি তৈরি করেন তবে ভিএস EF.dll এবং EF.SqlServer.dllটিকে সেই বিল্ড ফোল্ডারে রাখবে। তবে আপনার যদি এখন অন্য একটি প্রোগ্রাম আপনার গ্রন্থাগারটি ব্যবহার করে থাকে তবে কেবল EF.dll এই বিল্ড ফোল্ডারে রাখা হবে। EF.SqlServer.dll অনুপস্থিত। আপনি যদি এটি বিল্ড ফোল্ডারে ম্যানুয়ালি যোগ করেন তবে প্রোগ্রামটি কাজ করে। নিজের মধ্যে একটি ভাল সমাধান নয়, তবে সমস্যাটি EF.SQLServer.dll হারিয়ে যাওয়া ত্রুটির কারণ হিসাবে দেখায়।
এরিক

44
আমি var x = টাইপফ (System.Data.Entity.SqlServer.SqlProviderServices) যোগ করেছি; তারপরে আমার অ্যাপ্লিকেশনটি কাজ করেছিল
ব্রায়ান

33
আমি সর্বদা উদ্বিগ্ন যখন আমি কোডটি টাইপ করি তখন একেবারেই কিছুই হয় না এবং হঠাৎ আমার প্রকল্পটি চালায়। ও_ও
জর্ডান

10
এছাড়াও, সংকলক অপ্টিমাইজেশনের কারণে আপনিও এটি করতে চাইতে পারেন x.ToString()বা এটি typeofপ্রকাশের ক্ষেত্রে কার্যকর করবে।
জর্দান

15
আমি বিরক্তিকর বলে মনে করি যে EF 6.1 এর এখন আমার এএসপিএক্স ডিএলএল / প্রকল্পে ইএফ ইনস্টল করা দরকার, যখন ইএফ 5.0 কেবল এটি আমার ডেটা-লেয়ার ডিএলএল / প্রকল্পে প্রয়োজন।
পিটারএক্স

274

আমার টেস্ট প্রকল্পগুলিতে আমার একই সমস্যা ছিল - আমি নুগেটের মাধ্যমে সর্বশেষতম EF6 বিট ইনস্টল করেছি এবং প্রতিবার আমি ইএফ-সম্পর্কিত কিছু পেয়েছি:

'System.Data.SqlClient' ADO.NET সরবরাহকারীর জন্য সত্তা ফ্রেমওয়ার্ক সরবরাহকারীর ধরণ 'System.Data.Entity.SqlServer.SqlProviderServices, EntityFramework.SqlServer' এডো.নেট সরবরাহকারী লোড করা যায়নি। চলমান অ্যাপ্লিকেশনটিতে সরবরাহকারীর সমাবেশ উপলব্ধ রয়েছে তা নিশ্চিত করুন। আরও তথ্যের জন্য http://go.microsoft.com/fwlink/?LinkId=260882 দেখুন ।

আমার কার্যনির্বাহী: আমি এই পরীক্ষাটি আমার পরীক্ষার প্রকল্পের মধ্যে রেখেছি:

public void FixEfProviderServicesProblem()
{
//The Entity Framework provider type 'System.Data.Entity.SqlServer.SqlProviderServices, EntityFramework.SqlServer'
//for the 'System.Data.SqlClient' ADO.NET provider could not be loaded. 
//Make sure the provider assembly is available to the running application. 
//See http://go.microsoft.com/fwlink/?LinkId=260882 for more information.

var instance = System.Data.Entity.SqlServer.SqlProviderServices.Instance;
}

এই পদ্ধতিটি কখনই ডাকা হয় নি, তবে আমি মনে করি যে সংকলকটি সমস্ত "অপ্রয়োজনীয়" অ্যাসেমব্লিগুলি সরিয়ে ফেলবে এবং সত্ত্বা ফ্রেমওয়ার্কটি ব্যবহার না করেই q স্ক্যালসার্ভার স্টাফ পরীক্ষায় ব্যর্থ হয়।

যাইহোক: আমার মেশিনে কাজ করে;)

দ্রষ্টব্য: প্রকল্পটি পরীক্ষার জন্য পদ্ধতিটি যুক্ত করার পরিবর্তে আপনি আপনার মডেল / সত্তা প্রকল্প থেকে স্কেলপ্রাইডার সার্ভিসেসের স্থিতিশীল রেফারেন্স নিশ্চিত করতে পারেন


24
আমি একই কাজ শেষ। আমি সেই ব্যক্তির সাথে কথা বলতে চাই যিনি এই সমাবেশকে ডিবি সংযোগ খোলার উপর নির্ভরতা তৈরি করেছিলেন ency তাদের বিকল্প মহাবিশ্বে আমাদের সংযুক্ত স্ট্রিংয়ের সাথে কনফিগার করা ফাইল রয়েছে এমন সমস্ত ফ্রন্টএন্ড প্রকল্পগুলিতে সংযোগটি খোলার জন্য এটির একটি ডিএল পাওয়ার জন্য এন্টি ফ্রেমওয়ার্কটি উল্লেখ করা উচিত। কীভাবে এটি বোঝায় তা আমি বুঝতে পারি না।
juhan_h

3
এটি হ্যাক, তবে এটি আপনার জন্য সেরা / সবচেয়ে সহজ সমাধান যে দৃশ্যের জন্য খুঁজে পেয়েছেন যেখানে আপনার প্রকল্পের জন্য কোনও স্থাপনা প্যাকেজ তৈরি করা হয়নি।
কন

3
আপনার সকলের জন্য "var x = typof (SQLProviderServices);" এর মতো অন্যান্য পরামর্শ ব্যবহার করে। রবার্টের দেওয়া এই সমাধানটি কেবল উন্নয়ন এবং মেশিন তৈরিতে কাজ করে !!!
আলেকজান্ডার শ্মিট

3
ধন্যবাদ রবার্ট, ইএফ দল এটি হাস্যকর, তবে যাইহোক এটি আমার পক্ষে কাজ করছে।
হিতেশ

7
পরিষ্কার হতে হবে: উপরের কোডটি আপনার DbContextক্লাসে যুক্ত করা EF 6.1 এ সমস্যার সমাধান করবে। এইভাবে আপনাকে আপনার ফ্রন্ট-এন্ড (ওয়েবএপিআই, ইত্যাদি) প্রকল্পে সত্তা ফ্রেমওয়ার্ক নিউজ প্যাকেজটি অন্তর্ভুক্ত করার দরকার নেই এবং আপনার ডেটা লেয়ারে ইএফ সম্পর্কিত সমস্ত কিছু ছেড়ে যেতে পারে।
নিক

106

নুগেট আপনার EF6 প্রকল্পটি EntityFramework.SqlServer.dll রেফারেন্সে কনফিগার করবে। এটি বিল্ড চলাকালীন আপনার EF6 প্রকল্পের আউটপুট ফোল্ডারে মোতায়েন করে তবে এটি আপনার EF6 প্রকল্পের উল্লেখ প্রকল্পগুলির জন্য আউটপুট ফোল্ডারে স্থাপন করা হবে না will আমি বিশ্বাস করি এটি হ'ল ভিজুয়াল স্টুডিও যথেষ্ট "স্মার্ট" এটি সনাক্ত করতে যথেষ্ট যে আপনার সমাবেশে কিছুই আসলে ডেল সরাসরি ব্যবহার করে না এবং তাই এটি অন্তর্ভুক্ত করে না। আপনি আপনার EF6 প্রকল্পের (ইউনিট পরীক্ষা, UI এর ইত্যাদি) রেফারেন্সিং প্রজেক্টগুলির আউটপুট ফোল্ডারে স্থাপন করতে বাধ্যতামূলকভাবে EntityFramework.SqlServer.dll করতে পারেন আপনার ইএফ 6 প্রকল্পে কোড যোগ করে যেটি ইন্টিফ্রেমওয়ার্ক.সকিএল সার্ভার.ডিল ব্যবহার করে। কোডটি উত্পন্ন ক্লাসে না রাখার বিষয়ে সতর্কতা অবলম্বন করুন যেহেতু আপনি এটি পরবর্তী রেজিনে হারাতে ঝুঁকিপূর্ণ। আমি সমাবেশে নিম্নলিখিত ক্লাসটি যুক্ত করা বেছে নিয়েছি, যা সমস্যার সমাধান করেছে।

using System.Data.Entity.SqlServer;

internal static class MissingDllHack
{
    // Must reference a type in EntityFramework.SqlServer.dll so that this dll will be
    // included in the output folder of referencing projects without requiring a direct 
    // dependency on Entity Framework. See http://stackoverflow.com/a/22315164/1141360.
    private static SqlProviderServices instance = SqlProviderServices.Instance;
}

1
এটি এমএসটিস্টের প্রতি শ্রদ্ধার সাথে আমার জন্য সমস্যাটি সমাধান করেছে। আমি এই পদ্ধতিটি পছন্দ করি কারণ এর জন্য আমার পরীক্ষার ক্লাসগুলিতে শ্রেণীর উত্তরাধিকার নিয়ে আমি অগোছালো কিছু করার দরকার নেই do পরীক্ষার সমাবেশ এবং MAGIC এর কোথাও ক্লাস অন্তর্ভুক্ত করুন। ধন্যবাদ!
kbrimington

হুবহু, এই কারণেই এটি sqlserver.dll কে রেফারেন্সিং প্রকল্পগুলির আউটপুটে অনুলিপি করছে না। এক্সিকিউটিং অ্যাপ্লিকেশন এবং প্রসঙ্গ সমাবেশের মধ্যে যখন আপনার আরও একটি স্তর থাকে তখন এটি ঘটে। ধন্যবাদ এটি আমার সমস্যার সমাধান করেছে।
ভরত

2
যারা 4 সেকেন্ড ব্যয় করতে চান না তাদের জন্য এটি দেখুন: System.Data.Entity.SQLl সার্ভার ব্যবহার করে;
টিটিটি

আমরা ইউনিট পরীক্ষার জন্য একটি সাধারণ বেস ক্লাস ব্যবহার করি, সমস্ত ইউনিট পরীক্ষাগুলি এই শ্রেণীর উত্তরাধিকার সূত্রে প্রাপ্ত। এই পদ্ধতিটিকে একটি শ্রেণিতে যুক্ত করার অর্থ হ'ল বেস ইউনিট থেকে উত্তরাধিকারসূত্রে ইউনিট পরীক্ষার শ্রেণি সহ সমস্ত প্রকল্প ঠিক আছে।
ম্যাকজেজে

3
ছোট কথা, তবে কেন প্রয়োজনীয় তা বোঝানোর জন্য এই শ্রেণিতে একটি মন্তব্য যুক্ত করা ভাল best
জন ডারভিল

43

আমার সমাধানটি ছিল নুগেট ম্যানেজারের মাধ্যমে প্রকল্প থেকে সত্তা কাঠামোটি সরিয়ে আবার এটিকে যুক্ত করা।


9
PM> Update-Package -Reinstall "EntityFramework" -ProjectName "MyProj1"
ওয়াহিদএন

এটি আমার জন্য কার্যকর হয়েছিল এবং আমি মনে করি এটি সর্বোত্তম সমাধান হতে পারে
ccoutinho

সহজ, পরিষ্কার সমাধান যা কাজ করে। তালিকায় অনেক বেশি হওয়া উচিত
মোড777

29

আমি আমার ডিবিসিএনটেক্সট ক্লাসের উপরে এটির মতো একটি স্ট্যান্ডমেন্ট যুক্ত করে সমাধান করেছি:

using SqlProviderServices= System.Data.Entity.SqlServer.SqlProviderServices;

1
এটিই এই সমস্যার পরিষ্কার সমাধান। ধন্যবাদ.
আলেকজান্দ্রু ডিকু

এই সমাধানটি কাজ করে এবং পরিষ্কার দেখায়। প্রশ্ন: আমরা কি লাইনের আইডিটি আলগা করব ডিবিসিএনটেক্সট ক্লাসটি রিফ্রেশ করা হবে? ইডিএমএক্স ক্লাস জেনারেশন ব্যবহার করছেন?
নোলোমকগোসি

বিশ্বাস করা যায় না এটি প্রয়োজনীয় ছিল এবং কোনওভাবে মাইক্রোসফ্ট দ্বারা সংশোধন করা হয়নি - তবে এটি আমার পক্ষে কাজ করেছিল। একটি সহজ সমাধানের জন্য ধন্যবাদ।
জার বোম্বা

এই সমাধানটি কার্যত মিসিংডেলহ্যাকের মতো । এটি পরিষ্কার মনে হতে পারে তবে আপনার প্রসঙ্গের ক্লাসে কাজের কোডটি প্রবর্তন করে। এই কোডটি রিশার্পারের মতো সরঞ্জামগুলি অপসারণের জন্য পতাকাযুক্ত করা হবে এবং সময়ের সাথে সাথে সহজেই এটি হারিয়ে যেতে পারে। একটি ভাল সমাধান, তবে আমি কোড সতর্কতা তৈরি করে না এমন উপায়ে প্রেক্ষাপট থেকে পৃথক রাখতে পছন্দ করি।
টিমোথি শুনোভার

20

আমি সরবরাহকারীর জন্য কোড-ভিত্তিক নিবন্ধকরণ ব্যবহার করেছি। লিঙ্ক 1 লিঙ্ক 2

যেমন কনফিগারেশন ক্লাস তৈরি

class DbContextConfiguration : DbConfiguration
{
    public DbContextConfiguration()
    {
        this.SetDatabaseInitializer(new DropCreateDatabaseAlways<MyDbContext>());
        this.SetProviderServices(SqlProviderServices.ProviderInvariantName, SqlProviderServices.Instance);
    }
}

মূল বক্তব্যটি হ'ল সেট প্রবাইডার সার্ভিসেস (স্কেলপ্রোভিডার সার্ভিসস rov প্রভিডির ইনভায়ারান্টনাম, স্কেলপ্রোভাডার সার্ভিসেস.ইনস্ট্যান্স);

এবং এইভাবে এটি ব্যবহার

[DbConfigurationType(typeof(DbContextConfiguration))]
public class MyDbContext : DbContext
{
    public MyDbContext()
    {
        ...
    }

    public DbSet<...> ...{ get; set; }

    protected override void OnModelCreating(DbModelBuilder modelBuilder)
    {
        ...
    }
}

একটি সমাধানে আমার দুটি প্রকল্প রয়েছে। প্রথমটি শ্রেণি-গ্রন্থাগার যা সত্তা কাঠামো সমাবেশে একটি DbContext শ্রেণি এবং টিটি-ফাইলগুলি রয়েছে। দ্বিতীয় প্রকল্পটি উইন্ডোজ ফর্ম যা ইএফ-প্রকল্প ব্যবহার করে ডেটা পাওয়া উচিত। @ ন্যাশ: আপনি নিজের শ্রেণিটি কোথায় রেখেছেন (কোন প্রকল্পে) তা ব্যাখ্যা করতে পারবেন DbContextConfiguration? ধন্যবাদ

উপরে উল্লিখিত হিসাবে এটি মনে হয় যে অতিরিক্ত রেফারেন্সগুলি এটিকে ঠিক করার এক উপায় (এরিকের মন্তব্য দেখুন)। আমি নুগেট কনসোল ব্যবহার করেছি এবং এই আদেশটি বরখাস্ত করেছি: Get-Project MyWinformsProject | Install-Package EntityFrameworkএটি আমার জন্য এটি স্থির করেছে। তবুও আমি এর কারণটি আরও ভালভাবে বুঝতে চাই।

DbContextConfigration ইতিমধ্যে উপস্থিত বলে মনে হয়েছে (বনাম 2013), আমার MyDbContext শ্রেণীর উপরে DbConfiguraton লাইন যুক্ত করা আমার পক্ষে সমস্যাটি সমাধান করেনি।
অ্যান্ডারস লিন্ডন

আপনার কোনও ডিবি কনফিগারেশন ক্লাসের দরকার নেই । অ্যাপ্লিকেশন স্টার্টআপে নিম্নলিখিত কোড রাখুন (আগে মতিন ব্যবহার করা হয়): DbConfiguration.Loaded += (sender, e) => e.ReplaceService<DbProviderServices>((s, k) => System.Data.Entity.SqlServer.SqlProviderServices.Instance);
রোজবার্গ লিনহারেস

14

আমি আমার সমাবেশটি ক্লাস শুরু করার ক্লাসে [ডিপ্লোয়মেন্টআইটেম] এর সাথে এটি বাছাই করেছি

namespace MyTests
{
    /// <summary>
    /// Summary description for AssemblyTestInit
    /// </summary>
    [TestClass]
    [DeploymentItem("EntityFramework.SqlServer.dll")]
    public class AssemblyTestInit
    {
        public AssemblyTestInit()
        {
        }

        private TestContext testContextInstance;

        public TestContext TestContext
        {
            get
            {
                return testContextInstance;
            }
            set
            {
                testContextInstance = value;
            }
        }

        [AssemblyInitialize()]
        public static void DbContextInitialize(TestContext testContext)
        {
            Database.SetInitializer<TestContext>(new TestContextInitializer());
        }
    }
}

9

পার্টিতে দেরীতে, তবে শীর্ষে দেওয়া উত্তরগুলি আমার কাছে হ্যাকের মতো মনে হয়েছিল।

আমি যা করেছি তা হ'ল পরীক্ষার প্রকল্পের আমার app.config থেকে নিম্নলিখিতগুলি সরিয়ে ফেলা। কাজ করছে.

  <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>

আসল সমাধান!
বেন এফ

8

আমার সমস্যা আছে, কারণ আমি এন্টিফ্রেমওয়ার্ক.সকিএল সার্ভার.ডিএল-তে রেফারেন্স যোগ করি না। আমি যখন প্রোগ্রাম বিকাশ করি, এটি কার্যকর হয়। তবে আমি যখন অ্যাপটি প্রকাশ করি এবং এটি ইনস্টল করি তখন এটি ত্রুটি ছুঁড়ে দেয়।

আমি কেবল রেফারেন্স যুক্ত করে আবার বিল্ড এবং প্রকাশ করি।

তথ্যসূত্র


আমি এটি করেছি এবং এর কাজ করেছি worked মূলত প্রকল্পটি যখন একটি লাইব্রেরিতে উপাদানগুলি যথাযথভাবে উল্লেখ না করা হয় তখন একটি সতর্কতা দেখায়।
কেবিভিষ্ণু

5

আমি নিজেই মূল অ্যাপ্লিকেশনটির EntityFramework.SqlServer.dllফাইলটি অনুলিপি করে সমাধান করেছি bin folder


4

আমি অবশেষে এটি সমাধান। দেখা যাচ্ছে, আমি আমার সংগ্রহশালার ক্লাসে আইডিআইএসপোসেবলের একটি ভ্রান্ত বাস্তবায়ন করেছি। আমি ঠিক করেছিলাম। আমি সঠিকভাবে সংস্থানগুলি অপসারণ করছি না বলে ভুল প্রয়োগটি একটি স্ট্যাকওভারফ্লো ব্যতিক্রম ঘটায়। এর ফলে ভিএস পরীক্ষা চালাতে না পারায় এবং পরীক্ষার প্রয়োগকারী ইঞ্জিন ক্র্যাশ হয়েছিল।

আমি এটি এখানে মাইক্রোসফ্টের কাছে দায়ের করেছি (এটির সঠিক সমাধান পাওয়ার আগে এটি ছিল)। connect.microsoft.com/VisualStudio/feedback/details/775868/vs-test-execution-crashes-in-vs-2012#details

যাইহোক, বিল্ডগুলি এখন টিমসিটিতে সূক্ষ্মভাবে চালায়। তবুও, আমি এখনও কৌতূহল যে কেন ভিএস টেস্ট এক্সিকিউশন ইঞ্জিনের টিম সিটি নয় কী ঘটছে তা আমাকে বলার মনোযোগী উপায় ছিল way

আমি ম্যানুয়ালি পরীক্ষাটি ডিবাগ করে মূল কারণটি আবিষ্কার করেছি (যা আমি কেবল এত দিন পরে বুঝতে পেরেছিলাম, ফিক্সটি আমাকে 5 সেকেন্ড সময় নিয়েছিল)।

আশা করি এটি এমন কাউকে সহায়তা করবে যারা এই জাতীয় সমস্যাগুলি জুড়ে আসে।


4

আমি একই সমস্যাটি দেখতে পাচ্ছি, এবং এই পোস্ট থেকে পদ্ধতিটি ব্যবহার করে: ( http://entityframework.codeplex.com/workitem/1590 ), যা আমার সমস্যার সমাধান করে।

ইস্যুটি নিয়ে কাজ করার জন্য আপনি পরীক্ষা সমাবেশে যে কোনও জায়গায় এই জাতীয় কিছু লাইন যুক্ত করে সরাসরি আপনার পরীক্ষার সমাবেশটি সরবরাহকারীর সমাবেশকে উল্লেখ করতে পারেন: var _ = System.Data.Entity.SqlServer.SqlProviderServices.Instance;


3

যখন আমি সমস্যাটি পরিদর্শন করেছি, আমি লক্ষ্য করেছি যে নিম্নলিখিত dll আউটপুট ফোল্ডারে অনুপস্থিত ছিল। অ্যাপলিকেশন ডিবাগ মোডে থাকলে অ্যাপলিকেশন ফোল্ডারে app.config এর সাথে অনুলিপিটি হ'ল এন্টিটিফ্রেমওয়ার্ক.ডিল এবং এন্টিটিফ্রেমওয়ার্ক.সেক্লসারভার.ডিল এর সহজ সমাধান। একই সময়ে পরিবর্তন করুন, সর্বদা অনুলিপি করতে app.config এর বিল্ড অপশন প্যারামিটার "আউটপুট ফোল্ডারে অনুলিপি করুন"। এই আপনার সমস্যার সমাধান হবে।


2
আমি কেবল "এন্টিফ্রেমওয়ার্ক। এসকিএল সার্ভার" এর জন্য "স্থানীয় অনুলিপি" সত্য সেট আপ করেছি। এখন এটা কাজ করছে.
আলেজিস

3

কেবল রেফারেন্স বা ব্রাউজারটি EF dll - EntityFramework.SqlServer.dll


এটাই আমি করেছি। আমার লাইব্রেরি থেকে "চলমান" প্রকল্পে "এন্টিফ্রেমওয়ার্ক.সকিএল সার্ভার" এর উল্লেখটি অনুলিপি করেছেন। যে কাজ!
হ্যাকন কে। ওলাফসেন

3

আমার একই আইসিসু আমি অনেকবার চেষ্টা করেছি তবে এটি সমাধান হয়নি তবে আমি প্যাকেজটি ইনস্টল করার সময় এনটিটি ফ্রেমওয়ার্ক.সকিএল সার্ভারকম্প্যাক্ট এটি সমাধান করে নুগেট প্যাকেজ ম্যানেজার থেকে এই প্যাকেজটি ইনস্টল করুন।

Install-Package EntityFramework.SqlServerCompact

3

আমি একটি স্থিতিশীল "স্টার্টআপ" ফাইল তৈরি করেছি এবং এই 'কনফিগারেশন'কে আলাদা করার উপায় হিসাবে ডিএলএলকে বিন ফোল্ডারে অনুলিপি করতে বাধ্য করার জন্য কোডটি যুক্ত করেছি।


[DbConfigurationType(typeof(DbContextConfiguration))] public static class Startup { }

public class DbContextConfiguration : DbConfiguration
{
    public DbContextConfiguration()
    {
        // This is needed to force the EntityFramework.SqlServer DLL to be copied to the bin folder
        SetProviderServices(SqlProviderServices.ProviderInvariantName, SqlProviderServices.Instance);
    }
}


1
ধন্যবাদ! এটি একটি বিশাল সাহায্য ছিল।
অ্যাডিসন শোহার্ট

1
খুশি হলাম যে আপনি আমার উত্তরটি @ অ্যাডিসনসুহার্ড্টকে দরকারী বলে খুঁজে পেয়েছেন :)
হাটস্রুমন্ডকোড

2

আমি আমার অ্যাপ্লিকেশন প্রকল্পে (বা ম্যানুয়ালি কোনও কিছু অনুলিপি করতে) EF- র একটি রেফারেন্স চাইনি, তাই আমি এটি আমার ইএফ প্রকল্পের পোস্ট-বিল্ড ইভেন্টগুলিতে যুক্ত করেছি:

cp $(TargetDir)EntityFramework.SqlServer.dll $(SolutionDir){your-main-bin-folder}

2

এটি কেবলমাত্র আমার লোড / ইউনিট পরীক্ষার প্রকল্পগুলির মধ্যেই ঘটে। হতাশাজনক, আমি 2 বছর ধরে যা চালিয়ে যাচ্ছি এমন একটি প্রকল্পে এটি ছড়িয়ে পড়েছিল। অবশ্যই পরীক্ষার চলার কিছু ক্রম ছিল যা কিছু ভেঙে দেয়। আমি অনুমান করি যে একবার এই ফাইটি সরে যায় gets

আমি দেখতে পেয়েছি যে সঠিকভাবে সঠিক মান ব্যবহার করে এমন একটি ভেরিয়েবল ঘোষণা করা সমস্যার সমাধান করে ... আমি এমনকি পদ্ধতিটিকে কল করি না। শুধু এটি সংজ্ঞায়িত করুন। বিজোড় কিন্তু এটি কাজ করে।

    /// <summary>
    /// So that the test runner copies dlls not directly referenced by the integration project
    /// </summary>
    private void referenceLibs()
    {
        var useless = SqlProviderServices.Instance;
    }

2

অন্যান্য সমস্ত প্রস্তাবিত সমাধান চেষ্টা করার পরেও এবং আমার প্রকল্পটি কাজ না করার পরে অবশেষে এই পৃষ্ঠায় আমি একটি সামান্য মন্তব্য পেয়েছি :

বিন-ফোল্ডারটি মোছা আমার পক্ষে তা করেছে

এবং এটি আমার জন্যও কাজ করেছিল।


1
আমি 2 টি শাখা মার্জ করছিলাম - আমার প্রকল্পে ইএফ সম্পর্কিত কোনও পরিবর্তন হয়নি, তবে আমার ইউনিটসেটগুলি অকারণে ব্যর্থ হতে শুরু করে। বিন ফোল্ডারটি মোছা তাদের পুনরায় কাজ করে।
আরনো পিটারস

@ জীক 2 এই ত্রুটিটি একটি জটিল। আমি উদ্ধৃত পৃষ্ঠায় এই সমস্যাটি সমাধান করার জন্য বিভিন্ন ধরণের পরামর্শ রয়েছে। এটি সম্ভাব্য সমাধানগুলির মধ্যে একটি মাত্র। আপনার নির্দিষ্ট ইস্যুতে প্রযোজ্য এমন সমাধান না পাওয়া পর্যন্ত এটি গবেষণা চালিয়ে যান এবং শুভকামনা।
ইউলিসেস আলভেস

1

রেফারেন্স প্রজেক্টে এন্টিফ্রেমওয়ার্ক.ডিল এবং এনটিটিফ্রেম ওয়ার্ক.সেক্লসারভার.ডিল যুক্ত করা সমস্যার সমাধান করেছে।


1

আমি ইউনিট টেস্ট প্রকল্পে ডিবাগ আউটপুট উইন্ডোটি চেক করেছি। সত্তা ফ্রেমওয়ার্ক.সক্লু সার্ভার.ডিল লোড করা হয়নি। এটি বিন ফোল্ডারে যুক্ত করার পরে পরীক্ষাগুলি সফলভাবে চালিত হয়েছিল।


1

আমারও একই রকম সমস্যা ছিল

আমার সমস্যাগুলি নিম্নলিখিত বিষয়গুলি দ্বারা সমাধান করা হয়েছিল:

এখানে চিত্র বর্ণনা লিখুন

এখানে চিত্র বর্ণনা লিখুন


1

DBContextইউনিট পরীক্ষা প্রকল্পের ইনস্ট্যান্টেটিং অবজেক্টে আমার একই সমস্যা ছিল । আমি আমার ইউনিট পরীক্ষা প্রকল্পের প্যাকেজগুলি পরীক্ষা করেছিলাম এবং আমি অনুভব করেছি যে EntityFrameworkপ্যাকেজটি ইনস্টল করা হয়নি, আমি এটি নুগেট এবং সমস্যা সমাধানের মাধ্যমে ইনস্টল করেছি (আমি মনে করি এটি এটিএফ বাগ)।

শুভ কোডিং


0

আমি ঠিক একই ত্রুটি বার্তা ছিল।

আমার ডেটা অ্যাক্সেসের জন্য আমার একটি পৃথক প্রকল্প রয়েছে। স্থানীয়ভাবে ওয়েব প্রকল্প চালানো (যা ডেটা প্রজেক্টটি রেফারেন্স করে) ঠিক কাজ করেছে। কিন্তু আমি যখন ওয়েব প্রকল্পটি অ্যাসেম্বলিটি অ্যাজুরির জন্য স্থাপন করেছি: সত্তা ফ্রেমওয়ার্ক qএইএইচএল সার্ভার অনুলিপি করা হয়নি। আমি সবেমাত্র ওয়েব প্রকল্পে রেফারেন্স যুক্ত করেছি এবং পুনরায় নিয়োগ করেছি, এখন এটি কার্যকর হয়।

আশা করি এটি অন্যকে সহায়তা করে


0

আমি কন্টোসো বিশ্ববিদ্যালয়ের টিউটোরিয়াল অফলাইনে কাজ করছি এবং ইএফ ব্যবহার করে আমার প্রথম নিয়ামক তৈরি করার চেষ্টা করার সময় একই সমস্যার মুখোমুখি হয়েছিলাম। আমাকে প্যাকেজ ম্যানেজার কনসোলটি নুগেট ক্যাশে থেকে EF লোড করার জন্য ব্যবহার করতে হয়েছিল এবং এসকিউএল সার্ভারের আমার স্থানীয় উদাহরণে একটি সংযোগ স্ট্রিং তৈরি করতে হয়েছিল, এখানে আমার বক্তব্যটি EF- এর জন্য আমার ওয়েবকনফিগ সেটিংটি আপনার সমস্ত হিসাবে সেট করা নাও হতে পারে তবে আমি সক্ষম হয়েছি "সত্তা ফ্রেমওয়ার্ক" এর মধ্যে "সরবরাহকারী" বিভাগটি পুরোপুরি মুছে ফেলে আমার সমস্যা সমাধানের জন্য

রবার্ট


0

একটি সহজ ফিক্স আছে। আপনার প্রকল্পে উল্লেখগুলি খুলুন, "সিস্টেম.ডাটা" -> বৈশিষ্ট্যগুলিতে ডান ক্লিক করুন click "কপি লোকাল" কে "সত্য" এ পরিবর্তন করুন।

সমস্যা স্থির করা উচিত।


0

আমার ক্ষেত্রে আমি এসকিউএল সার্ভার 2012 বিকাশকারী সংস্করণ ইনস্টল করে সমস্যার সমাধান করেছি যখন আমি পূর্বে এসকিউএল সার্ভার এক্সপ্রেস 2012 (x64) ইনস্টল করেছি। মনে হচ্ছে এটি আমাকে অনুপস্থিত নির্ভরতা দিয়েছিল।


0

প্রকল্প থেকে সত্ত্বার কাঠামোটি নুগেটের মাধ্যমে সরিয়ে ফেলুন এবং এরপরে আবার যুক্ত করুন।


0

আমার ক্ষেত্রে dllএটি অনুলিপি করা হয়নি যদিও আমি এটিতে একটি রেফারেন্স যুক্ত করেছি। এটি কারণ EntityFramework.SqlServer.dllআপনার প্রকল্পে অনুলিপি করা হয়নি। যে dll যোগ করুন এবং এটি আশাবাদী কাজ করবে। আপনি যে প্রকল্পটি ডেটামোডেল যুক্ত করেছেন সেখানেই এটি সন্ধান করতে পারেন।


0

এখানে সমস্ত দরকারী পরামর্শের অতিরিক্ত, আপনি যদি EF 6.1.3 ব্যবহার করে থাকেন তবে আপনার প্রকল্পের। নেট সংস্করণটি 4.5 বা আরও বেশি তা নিশ্চিত করুন।

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.