'সিস্টেম.ডাটা.এসএইচএলসিপ্লায়েন্ট' নামযুক্ত অ্যাডো.নেট সরবরাহকারীর জন্য কোনও সত্তা ফ্রেমওয়ার্ক সরবরাহকারী পাওয়া যায় নি


542

নুগেট করে EF6 ডাউনলোড করার পরে এবং আমার প্রকল্পটি চালনার চেষ্টা করার পরে এটি নিম্নলিখিত ত্রুটিটি প্রদান করে:

'সিস্টেম.ডাটা.এসএইচএলসিপ্লায়েন্ট' নামযুক্ত ADO.NET সরবরাহকারীর জন্য কোনও সত্তা ফ্রেমওয়ার্ক সরবরাহকারী খুঁজে পাওয়া যায় নি। নিশ্চিত করুন যে সরবরাহকারীর অ্যাপ্লিকেশন কনফিগার ফাইলের 'সত্তা ফ্রেমওয়ার্ক' বিভাগে নিবন্ধভুক্ত রয়েছে। আরও তথ্যের জন্য http://go.microsoft.com/fwlink/?LinkId=260882 দেখুন ।

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


আমি স্টাফ providersএবং providerস্টাফ ছাড়াই EF5 ব্যবহার করি , তাই এটি অপসারণের কথা বিবেচনা করুন?
ta.speot.is

1
আপনার সংযোগের স্ট্রিংয়ের একটি অনুলিপি এখানে রাখুন
পাইওভার

সংযোগের স্ট্রিং ছবিতে (অ্যাপকনফিং) রয়েছে, উপায়টি খুব সহজ, আমি কনস্ট্রাক্টরকে ফোন করি public BaseStorage(): base ("RaptorDB") {}, বেএসস্টারেজ () ইফ 5-তে ডিবি কনটেক্সট থেকে উত্তরাধিকার সূত্রে প্রাপ্ত সবকিছুই ইতিমধ্যে EF6 এ নয়।
ফার্নান্দো ভেলোজো

10
দ্বিতীয় প্রকল্প (কনসোল) ইএফ 6 ইনস্টল করে সমস্যার সমাধান হবে, যে কোনওভাবে সহায়তা করেছেন এমন প্রত্যেককে ধন্যবাদ!
ফার্নান্দো ভেলোজো

3
আমার জন্য, এটি ভিজ্যুয়াল স্টুডিও বুঝতে না পেরে ঘটেছে বলে মনে হয়েছে যে এন্টিফ্রেমওয়ার্ক।সক্লু সার্ভার অ্যাসেম্বলিটি বেস বেস প্রকল্পটি আসলে ব্যবহার করেছিল। আপনি যদি @ ক্যারার উত্তরের মতো কিছু করেন তবে আপনার বেস প্রকল্পের উল্লেখ করে এমন প্রতিটি প্রকল্পে আপনাকে ইএফ যুক্ত করতে হবে না - অনেক বেশি ক্লিনার।
tehDorf

উত্তর:


608

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

আমি প্যাকেজ ম্যানেজার কনসোলে নিম্নলিখিত কমান্ডটি চালিয়ে এটি ঠিক করতে পেরেছি :

PM> Install-Package EntityFramework

34
পিএমসি লিখেছিল যে 'এন্টিফ্রেমওয়ার্ক 6.0.1' ইতিমধ্যে ইনস্টল করা হয়েছে, তবে এটি আমার কনসোল অ্যাপে যুক্ত হয়েছে (যা যথাযথভাবে EF ব্যবহার করছে না), তবে এটি আমার জন্যও কৌশলটি করেছে। II কনসোল অ্যাপ্লিকেশন রেফারেন্সগুলি, ত্রুটি রিটার্নগুলি থেকে ইএফ সরান - আমি এটি পাই না - আমার কনসোল অ্যাপটি সংগ্রহস্থল প্রকল্প ব্যবহার করছে (যা EF ব্যবহার করে) সহায়তার জন্য ধন্যবাদ!
প্রোকুরার্স

33
আপনার সমাধানে বেশ কয়েকটি প্রকল্প থাকলে কমান্ড লাইনে -প্রজেক্টনাম <প্রজেক্টনাম> যুক্ত করতে ভুলবেন না ... !!!
ইউজিনিও মিরি

1
-Preবিকল্প ব্যবহার করে বলুন নুগেট প্রিরিলেজ প্যাকেজ ইনস্টল করতে। আমি এটি ব্যবহার করার পরামর্শ দিচ্ছি না। আমার অনুরূপ ত্রুটি আছে তবে সমাধানটি ছিল কেবল হোস্ট প্রকল্পে এন্টিফ্রেমওয়ার্ক ইনস্টল করা। আমি এটি ক্লাসের লাইব্রেরিতে ইনস্টল করেছি তবে মূল প্রকল্পে (ওয়েব / কনসোল / বা যাই হোক না কেন),
ডেভিড ইকার্দি

10
এখানেও একই সমস্যা। আমার একটি প্রকল্প ছিল যা ইএফ-তে উল্লেখ নেই তবে EF dll ছিল ডিবাগ ফোল্ডারে। এই প্রকল্পের বিরুদ্ধে এই কমান্ডটি চালানো EntityFramework.SqlServer.dllডিবাগ ফোল্ডারে যুক্ত হয়েছে - সমস্যা সমাধান হয়েছে।
qujck

4
আমার পরিস্থিতিতে এই ত্রুটিটি উপস্থিত হয় নি যতক্ষণ না আমি প্রকল্পটি আমাদের পরীক্ষার সার্ভারে স্থাপন করি। প্রকৃতপক্ষে এটি ছিল EntityFramework.SqlServer.dll যে অনুপস্থিত ছিল এবং প্যাকেজ ম্যানেজারের মাধ্যমে EF ইনস্টল করার কাজ করেছিল। এটি কেবলমাত্র প্রকল্পে দুটি প্রাসঙ্গিক তথ্যসূত্র যুক্ত করেছে এবং তারপরে সারণি ফ্রেমওয়ার্ক সেটিংসটি ওয়েবকনফাইগে যুক্ত করেছে। আমার ধারণা, স্থানীয় আইআইএস স্থানীয়ভাবে অ্যাসেমব্লির উত্স তৈরি করতে পেরেছিল তবে ওয়েব সার্ভারে সম্পূর্ণ আইআইএস অনুমতিের কারণে পারে নি?
20:55

383

আপনি একটি শ্রেণিবদ্ধ গ্রন্থাগার প্রকল্পে EF যুক্ত করেছেন। আপনাকে প্রজেক্টে এটি যুক্ত করতে হবে যা এটির উল্লেখ করে (আপনার কনসোল অ্যাপ্লিকেশন, ওয়েবসাইট বা যাই হোক না কেন)।


246
এটি একেবারে হাস্যকর উত্তর। কেন পৃথিবীতে আমার তা করা দরকার? এবং আপনি কি আরও হাস্যকর জানেন? এটা কাজ করে।
রবার্ট

19
নীচে আমার উত্তরটি দেখুন, আপনার কনসোল অ্যাপ্লিকেশনটিতে আপনাকে ইএফ ইনস্টল করার দরকার নেই।
ফ্রান্সিসকো গোল্ডেনস্টাইন

7
আপনি উত্তর সঠিক। EF সহ একটি লাইব্রেরি ব্যবহার করে এমন সামনের প্রকল্পটি যুক্ত করতে কেবল EntityFramework.SqlServer.dll উল্লেখ করুন, সমস্যাটি ঠিক করুন। সুতরাং এই ইএফ (কেবলমাত্র ডিএলএল) ব্যবহার করবেন না
হারভেয়েট করুন

31
কনসোল / ওয়েব অ্যাপে আপনাকে ইএফ-তে একটি রেফারেন্স যুক্ত করতে হবে না । আপনার কেবল এটি নিশ্চিত করতে হবে EntityFramework.SqlServer.dllযে বিন ডিরেক্টরিতে অনুলিপি করা হচ্ছে। শক্তিশালী রেফারেন্স যুক্ত করা আপনার আর্কিটেকচারটি ভেঙে দিতে পারে (যদি আপনি একাধিক স্তর তৈরি করেন তবে আপনার শীর্ষ-স্তরের নির্বাহী সমাবেশটি এমনকি EF সম্পর্কেও জানতে হবে না)। পরিবর্তে, আপনি এসকিউএল সার্ভার সরবরাহকারীর অনুলিপি করা নিশ্চিত করতে পারেন। উদাহরণস্বরূপ দেখুন stackoverflow.com/a/19130718/870604
ken2k

3
আমি সন্দেহ করি যে কারণে এন্টি ফ্রেমওয়ার্ক.সকিএলসার্ভার.ডিল কোনও নির্ভরতা হিসাবে সনাক্ত করা যায় নি কারণ সত্তা ফ্রেমওয়ার্ক এটি গতিশীলভাবে লোড করে। আপনার প্রকল্পটি যখন এসকিউএল সরবরাহকারীর সাথে অনুলিপি করতে জানবে তখন কেবলমাত্র এটির রেফারেন্সটি কনফিগারেশনে থাকবে?
জোয়েল ম্যাকবেথ

209

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

সংক্ষেপে:

  • ক্লাস লাইব্রেরির আবেদন:
    • সত্তা ফ্রেমওয়ার্ক ইনস্টল করুন
    • আপনার ডেটা স্তর কোডটি লিখুন
    • app.config ফাইলে সংযোগ স্ট্রিং ব্যতীত সত্তা ফ্রেমওয়ার্ক সম্পর্কিত সমস্ত কনফিগারেশন রয়েছে।
  • একটি কনসোল, ওয়েব বা ডেস্কটপ অ্যাপ্লিকেশন তৈরি করুন:
    • প্রথম প্রকল্পে একটি রেফারেন্স যুক্ত করুন।
    • সত্তা ফ্রেমওয়ার্ক.সক্লু সার্ভার.ডিলএ একটি রেফারেন্স যুক্ত করুন।
    • app.config / web.config এর সাথে সংযোগের স্ট্রিং রয়েছে (মনে রাখবেন যে কনফিগারেশন এন্ট্রিটির নাম DbContext শ্রেণীর নামের মতো হতে হবে।

আমি আসা করি এটা সাহায্য করবে.


18
সঠিক উত্তর. ইএফ ইনস্টল করার দরকার নেই। সত্তা ফ্রেমওয়ার্ক.সক্লু সার্ভার.ডিল।
টম স্টিকেল

15
আমাকে একমত হতে হবে এটি সম্পূর্ণরূপে সঠিক উত্তর। 1/2 এমবি পরিমাণে একটি ডেল রেফারেন্স করুন বা EF নুগেট প্রকল্পটি> 5.5 এমবি টানুন। মাল্টি টায়ারকেও আর্কিটেকিং করার জন্য কিছুটা মূল্য হ্রাস করে। এমএস থেকে খারাপ অনুষ্ঠানটি সত্যই: আমার 4 টি স্তর রয়েছে এবং আমার শীর্ষ স্তরের EF সম্পর্কে কিছুই জানার কোনও কারণ নেই
72 জিএম

18
তবুও হাস্যকর। উদাহরণস্বরূপ, কেন একটি সম্মুখ প্রান্তে স্কেল সার্ভারের একটি রেফারেন্স প্রয়োজন? সামনের প্রান্তটি আমার পক্ষে কম যত্ন করতে পারে না। কিন্তু এটি কাজ করে. +1
মাইক ডি ক্লার্ক

2
এটি সহায়ক ছিল। অনেক ধন্যবাদ.
পিটার_এই_ওক

1
এটি কি এন্টিফ্রেমওয়ার্কের সংস্করণগুলি আপডেট করা কঠিন করে তুলবে না? আপনাকে যেতে হবে এবং ডিএলএল
ক্রাশ করুন

114

আপনি যদি "EntityFramework.SqlServer.dll" অন্তর্ভুক্ত করতে ভুলে যান তবে আপনি এই বার্তাটি দেখতেও পারেন

এটি EF6- এ একটি নতুন যুক্ত হওয়া ফাইল হিসাবে উপস্থিত রয়েছে। প্রাথমিকভাবে আমি এটিকে আমার সংশ্লেষের মডিউলে অন্তর্ভুক্ত করিনি এবং এখানে তালিকাবদ্ধ সমস্যার দিকে দৌড়েছি।


7
আমি এই সমস্যায় পড়েছিলাম যখন আমার পূর্বে একটি প্রকল্প ছিল (ক) একটি প্রকল্পের (রে) রেফারেন্স সহ যা ইএফ-র একটি রেফারেন্স ছিল। প্রকল্পটি (ক) বিন ফোল্ডারটি মুছে ফেলার পরে এবং পুনর্নির্মাণের পরে, EF রেফারেন্সটি এসেছে তবে EF.SqlServer.dll নয়। এটি ম্যানুয়ালি আমার পক্ষে কাজ করে অনুলিপি করা হয়েছে
ড্যান রিচার্ডসন

2
@ লাদান রিচার্ডসন 'বিন ফোল্ডার মুছুন' উল্লেখ করার জন্য ধন্যবাদ।
রাজশেকার রেড্ডি

EF6 আপগ্রেডের পরে একটি লিনকিপ্যাড স্ক্রিপ্ট চালানোর চেষ্টা করার সময় আমি ত্রুটি পেয়েছি। এমনকি লিনকুইপ্যাডে সত্তা ফ্রেমওয়ার্ক.সক্লু সার্ভার.ডিল উল্লেখ করেও আমি ভিএস ২০১৩-এ আমার সমাধানটি পুনর্নির্মাণ না করা পর্যন্ত এটি ঠিক করে নি। নতুন রেফারেন্সটি তখন লিনকিউপ্যাডে সঠিকভাবে সমাধান হয়েছে এবং আমার স্ক্রিপ্টটি চলে!
ক্রিস

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

এটি আমার জন্য সমস্যা ছিল, ধন্যবাদ! প্রতিটি প্রয়োজনীয় প্রকল্পে ডিএলএল অন্তর্ভুক্ত করতে ভুলে যাওয়া বিষয়গুলি এড়াতে @ অ্যান্ডারদের দ্বারা পরিষ্কার সমাধান দেখুন।
শার্পসি

54

প্রকল্প হোস্ট করার জন্য এন্টিফ্রেমওয়ার্ক.সকিএল সার্ভার যুক্ত করার পরিবর্তে আপনি এটির মতো আপনার মডেল / সত্তা প্রকল্প থেকে এটির একটি স্থিতিশীল রেফারেন্স নিশ্চিত করতে পারেন

static MyContext()
{
    var type = typeof(System.Data.Entity.SqlServer.SqlProviderServices);
    if(type == null)
        throw new Exception("Do not remove, ensures static reference to System.Data.Entity.SqlServer");
}

এটি বিল্ড প্রক্রিয়াটি হোস্ট প্রকল্পের সাথে সমাবেশকে অন্তর্ভুক্ত করবে।

আমার ব্লগটিতে আরও তথ্য http://andersmalmgren.com/2014/08/20/impণী-d dependferences-and-copy-local-fails-to-copy/


5
আমি মনে করি এটি একটি দুর্দান্ত পরিষ্কার সমাধান যেখানে আমাদের প্রকল্পগুলিতে দৃ .়তা সম্পর্কিত ডিএলএলগুলির উল্লেখগুলি অন্তর্ভুক্ত করতে হবে না যা অধ্যবসায়িক অজগনীয় হওয়া উচিত।
জেটেক

3
সম্মত হয়েছে, এবং এটি কেবল
অ্যান্ডার্স

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

2
এটি ব্যতীত আপনার কোড থেকে সমাবেশের স্পষ্ট নির্ভরতা নেই এবং এটি আউটপুটে অনুলিপি করা হবে না
Anders

2
ইহা অসাধারণ.
ক্রিস

48

যখন আপনি সত্তা ফ্রেমওয়ার্ক 6 ইনস্টল করবেন Nuget। সত্তা ফ্রেমওয়ার্ক.সক্লু সার্ভার একাধিক এক্সিকিউটেবলের জন্য মিস। Nugetএই প্রকল্পে কেবল প্যাকেজ যুক্ত করুন ।

কখনও কখনও উপরে টেস্ট প্রকল্পের জন্য কাজ করে না

পরীক্ষার প্রকল্পে এই সমস্যাটি সমাধান করার জন্য এই পরীক্ষাটি টেস্ট প্রকল্পের মধ্যে রাখুন:

public void FixEfProviderServicesProblem()
{
    var instance = System.Data.Entity.SqlServer.SqlProviderServices.Instance;
}

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


2
ভাল এটি সুন্দর নয় তবে এটি আমার পরীক্ষার প্রকল্পে যে সমস্যাটি নিয়েছিল তা ঠিক করেছে। অন্য কোনও সমাধান কাজ করেনি।
শ্রদ্ধেয় চৌ চৌ

আমার ক্ষেত্রে এটি "সমাধানের জন্য নুগেট প্যাকেটগুলি পরিচালনা করুন"
জুহা পালোমকি

প্রকৃতপক্ষে আপনাকে কোনও প্রকল্পের মধ্যে ফেলতে হবে (কেবল পরীক্ষা নয়) যে সিস্টেম.ডাটা.এন্টিটি.সকিএল সার্ভার সংকলনের পরে "ফলাফলের লিবিটে" অন্তর্ভুক্ত করা হবে (দ্রষ্টব্য: ityক্য বা অন্যান্য আইওসি সরঞ্জাম এই নিয়মটি পরিবর্তন করতে পারে এবং আপনি পরীক্ষার প্রকল্প থেকে এই কোডটি কল করতে হবে)।
রোমান পোক্রভস্কিজ

এটি আসলে সেরা সমাধান, কারণ আপনার প্রকল্পের যে কোনও জায়গায় আপনাকে সত্তা ফ্রেমওয়ার্কের রেফারেন্স স্প্রে করতে হবে না।
ড্যানিয়েল লোবো

এটি আমাকে সঠিক দিকে ইঙ্গিত করেছিল। EntityFramework.SqlServerআপনার বর্গ লাইব্রেরিতে যোগ করা হয়, কিন্তু যদি ব্যবহার করা হয় না, এটি আপনার আবেদন আউটপুট ফোল্ডার ভিতরে স্থাপন করা হবে না। আমি একজন যোগ করে সমস্যা সমাধান করা হয়েছে ExecutionStrategy, যা আমি এখনও করা প্রয়োজন, তাই মত একটি লাইন যোগ SetExecutionStrategy("System.Data.SqlClient", () => new SqlAzureExecutionStrategy());ভিতরে DbConfigurationবর্গ সমস্যা সংশোধন।
জানু_ভি

24

এই ফাংশন যুক্ত করুন

private void FixEfProviderServicesProblem()

লাইব্রেরি ক্লাসে ডাটাবেস প্রসঙ্গে ক্লাসে এবং অনুপস্থিত ডিএলএল সত্তা ফ্রেমওয়ার্ক.এসএইচএল সার্ভার.ডিল সঠিক জায়গায় অনুলিপি করা হবে।

namespace a.b.c
{
    using System.Data.Entity;

    public partial class WorkflowDBContext : DbContext
    {
        public WorkflowDBContext()
            : base("name=WorkflowDBConnStr")
        {
        }

        public virtual DbSet<WorkflowDefinition> WorkflowDefinitions { get; set; }
        public virtual DbSet<WorkflowInstance> WorkflowInstances { get; set; }
        public virtual DbSet<EngineAlert> EngineAlerts { get; set; }
        public virtual DbSet<AsyncWaitItem> AsyncWaitItems { get; set; }
        public virtual DbSet<TaskItem> TaskItems { get; set; }
        public virtual DbSet<TaskItemLink> TaskItemLinks { get; set; }

        protected override void OnModelCreating(DbModelBuilder modelBuilder)
        {
        }

        private 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;
        }
    }
}


দুঃখিত, এটি প্রত্যাহার করার চেষ্টা করছি ... যেহেতু আমি ভাবিনি যে এটি কার্যকর হবে ... এবং এটি ঘটে! ... এটি বলে যে আমি আমার ভোট পরিবর্তন করতে পারছি না, যদি না উত্তর সম্পাদনা না করা হয়, তবে এটি খুব দীর্ঘ হয়েছে এবং তখন থেকে হয়েছে লক করা হয়েছে ...
Seabizkit

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

1
কোথায় আপনি কল করবেন FixEfProviderServicesProblemআমি ভাগ্য নির্বিঘ্নে নির্মাণকারী চেষ্টা করেছি।
ফ্রান্সিস ডুকারমে

1
আমি কখনই ফোন করি না - করতে হবে না। সেখানে থাকা সত্যটি। নেটকে এটির প্রয়োজনীয়তা মনে করে এবং নির্ভরতা হিসাবে সত্ত্বা ফ্রেমওয়ার্ক অন্তর্ভুক্ত করে।
জোহানেস

সম্ভবত স্ট্যাকওভারফ্লো . com/a/19130718/1467396 থেকে ? তবে +1, যেভাবে / কোথায় এটি ব্যবহার করবেন সে সম্পর্কে স্পষ্টতার জন্য।
ডেভিড

20

এগুলির কোনওটিই আমার পক্ষে কাজ করেনি। আমি আর একটি স্ট্যাকওভারফ্লো প্রশ্নের সমাধান পেয়েছি । আমি এখানে সহজ রেফারেন্সের জন্য এটি যুক্ত করব:

আপনাকে একটি রেফারেন্স তৈরি করতে হবে, তাই এটি অনুলিপি অ্যাপ্লিকেশন পথে অনুলিপি করা হবে। কারণ পরে এটি রানটাইমে উল্লেখ করা হবে। সুতরাং আপনার কোনও ফাইল অনুলিপি করার দরকার নেই।

private volatile Type _dependency;

public MyClass()
{
    _dependency = typeof(System.Data.Entity.SqlServer.SqlProviderServices);
}

2
এই! এই প্রকল্পটি উল্লেখ করতে পারে এমন অন্যান্য প্রকল্পগুলিতে একটি রেফারেন্স যুক্ত করার দরকার নেই।
tehDorf

8

এসকিউএল সার্ভার কমপ্যাক্ট ৪.০ সহ সত্তা ফ্রেমওয়ার্ক using ব্যবহার করার সময় আমি একই ত্রুটি পেয়েছি। EF6 এর জন্য সত্তা ফ্রেমওয়ার্ক সরবরাহকারীদের জন্য এমএসডিএন সম্পর্কিত নিবন্ধটি সহায়ক ছিল। প্যাকেজ ম্যানেজার কনসোলে নুগেট প্যাকেজ হিসাবে সম্পর্কিত সরবরাহকারী কমান্ডগুলি চালানো সমস্যার সমাধান হতে পারে, পাশাপাশি নুগেট প্যাকেজগুলি স্বয়ংক্রিয়ভাবে কনফিগ ফাইলে নিবন্ধগুলি যুক্ত করবে। আমি PM> Install-Package EntityFramework.SqlServerCompactসমস্যা সমাধানের জন্য দৌড়েছি ।


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

1
সহজভাবে জীবন রক্ষাকারী এটি উত্তর হিসাবে চিহ্নিত করা উচিত কারণ এটি স্পষ্টভাবে সমস্যার সমাধান সরবরাহ করে
জাফরযৌসফি

7

ওয়েব প্রকল্পের সেট, বিভিন্ন প্রকল্পে প্রতিটি এবং এই কয়েকটি পরিষেবার জন্য ইন্টিগ্রেশন পরীক্ষা সমেত একটি পৃথক প্রকল্পের সাথে কাজ করার সময় আজ এই সমস্যার মধ্যে পড়ে।

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

এখন, EF6 এ আপগ্রেড করার পরে, মনে হচ্ছে যে ইন্টিগ্রেশন টেস্ট প্রজেক্টে আমি EF6 এর একটি রেফারেন্সও অন্তর্ভুক্ত করতে হবে, যদিও এটি সেখানে ব্যবহার করা হয়নি (উপরে ইউজার3004275 দ্বারা উল্লিখিত হিসাবে বেশ )।

আপনি একই সমস্যার মুখোমুখি হচ্ছেন:

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

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


7

পরীক্ষাগুলি প্রকল্পগুলিতে ত্রুটি ঘটলে সর্বোত্তম সমাধানটি পরীক্ষা ক্লাসটি দিয়ে সাজানো হয়:

[DeploymentItem("EntityFramework.SqlServer.dll")]

এটি সত্যই সুন্দর, তবে আরও কাজ উত্পন্ন করে এবং এটি ভুলে যাওয়া সহজ। "জোরপূর্বক রেফারেন্স" ট্রিকের সাহায্যে আপনার কেবল প্রকল্প (গুলি) এ করা দরকার যা সত্যই EF ব্যবহার করা দরকার।
চার্লস রবার্তো কানাটো

7

স্টার্টআপ প্রজেক্টটি যে প্রকল্পটির উল্লেখ করে যেখানে সত্তা ফ্রেমওয়ার্ক ব্যবহৃত হচ্ছে তার বিন ফোল্ডারে নিম্নলিখিত দুটি সমাবেশ প্রয়োজন:

  • EntityFramework.dll
  • EntityFramework.SqlServer.dll

একটি যোগ করার পদ্ধতি <section>থেকে <configSections>প্রারম্ভে প্রকল্পে .config ফাইলের প্রথম সমাবেশ যে bin ডিরেক্টরীতে উপস্থিত করে। আপনি আপনার সত্তা ফ্রেমওয়ার্ক প্রকল্পের .কফিগ ফাইল থেকে এটি অনুলিপি করতে পারেন:

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

দ্বিতীয় .dll বিন ফোল্ডারে উপলব্ধ করার জন্য, ব্যবহারিক না হলেও, সত্তা ফ্রেমওয়ার্ক প্রকল্পের বিন ফোল্ডার থেকে একটি ম্যানুয়াল অনুলিপি তৈরি করা যেতে পারে। সত্তা ফ্রেমওয়ার্ক প্রকল্পের পোস্ট-বিল্ড ইভেন্টগুলিতে যুক্ত করার চেয়ে আরও ভাল বিকল্প হ'ল প্রক্রিয়াটি স্বয়ংক্রিয় হবে:

cd $(ProjectDir)
xcopy /y bin\Debug\EntityFramework.SqlServer.dll ..\{PATH_TO_THE_PROJECT_THAT_NEEDS_THE_DLL}\bin\Debug\

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

4

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


4

নীচে আপনার app.config এ যুক্ত করুন।

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

আপনার <configSections><section name="entityFramework" type="System.Data.Entity.Internal.ConfigFile.EntityFrameworkSection, EntityFramework, Version=6.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" requirePermission="false" />
এটিতেও

এটি "আইআইনস্টল-প্যাকেজ সত্তা ফ্রেমওয়ার্ক" করে। এটি সত্যই প্রয়োজনীয় নয় কারণ ডিফল্টরূপে এন্টিফ্রেমক্কলটি স্কিটিপ্লায়েন্ট ইনগ্রানেট নামটির জন্য এন্টিফ্রেমওয়ার্ক.সক্লাল সার্ভার.ডিল লোড করার চেষ্টা করে। এই পদ্ধতিটি সরবরাহকারীর বিকল্প হিসাবে ব্যবহার করা যেতে পারে।
ব্যবহারকারী 1295211


3

আপনাকে সত্তা ফ্রেমওয়ার্ক.সকিএল সার্ভার.ডিল সমাবেশে স্থির রেফারেন্স জোর করা উচিত , তবে ডামি কোড রাখার পরিবর্তে আপনি আরও সুন্দর উপায়ে এটি করতে পারেন:

  1. আপনার যদি ইতিমধ্যে একটি ডিবি কনফিগারেশন ক্লাস থাকে:

    public class MyConfiguration : DbConfiguration
    {
        public MyConfiguration()
        {
            this.SetProviderServices(System.Data.Entity.SqlServer.SqlProviderServices.ProviderInvariantName, System.Data.Entity.SqlServer.SqlProviderServices.Instance);
        }
    }
  2. আপনার যদি ডিবি কনফিগারেশনের শ্রেণি না থাকে তবে আপনাকে অবশ্যই অ্যাপ্লিকেশন শুরুতে নিম্নলিখিত কোডটি রাখতে হবে (ইএফ ব্যবহারের আগে):

    static MyContext()
    {
        DbConfiguration.Loaded += (sender, e) =>
            e.ReplaceService<DbProviderServices>((s, k) => System.Data.Entity.SqlServer.SqlProviderServices.Instance);
    }

2

আমি সবেমাত্র নিউগেট ব্যবহার করে সত্তা ফ্রেমওয়ার্কটি পুনরায় ইনস্টল করেছি। : এবং নির্দেশ নীচের লিঙ্কে লেখা অনুসরণ http://robsneuron.blogspot.in/2013/11/entity-framework-upgrade-to-6.html

আমি মনে করি সমস্যাটি সমাধান হয়ে যাবে।


একটি ব্যাখ্যা ভাল হবে! আপনাকে কেন এটি পুনরায় ইনস্টল করতে হবে এবং এ জাতীয়
Rizier123

1
কারণ কোনও অজানা কারণে (গুলি) পরিবর্তনগুলি কার্যকর হবে না এবং তাই আমি এন্টি ফ্রেমওয়ার্কটি পুনরায় ইনস্টল করেছি .1.১.১ এবং এর পরে এটি কার্যকর হয়।
কুন্তাল ঘোষ

2

আপনারমোডেল.এডএমএক্স ফাইলটি প্রসারিত করুন এবং আপনারমোডেল.কন্টেক্সট.টিটির অধীনে আপনারমডেল.কন্টেক্সট.এস ক্লাস খুলুন।

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

SqlProviderServices = System.Data.Entity.SqlServer.SqlProviderServices ব্যবহার করে;

প্রতিবার ফাইল স্বয়ংক্রিয়ভাবে উত্পন্ন হওয়ার সময় আপনাকে এই লাইনটি ফাইলে যুক্ত করতে হতে পারে।


2

আমারও একই রকম সমস্যা ছিল। আমার সমস্যাটি নিম্নলিখিত বিষয়গুলি সমাধান করে সমাধান করা হয়েছিল:

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

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


2

দেখে মনে হচ্ছে কেউ প্রথমে System.Data.SqlClient সিস্টেমে ইনস্টলড আছে কিনা এবং এটিতে কোনও রেফারেন্স তৈরি করা হয়েছে কিনা তা যাচাই করার আগে উল্লেখ করেনি।

আমি System.Data.SqlClient ইনস্টল করে এবং অ্যাপে একটি নতুন সরবরাহকারী যুক্ত করে আমার সমস্যা সমাধান করেছি on কনফিগ

<provider invariantName="System.Data.SQLite" type="System.Data.SQLite.EF6.SQLiteProviderServices, System.Data.SQLite.EF6"/>

1

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


1

আমি উপরোক্ত প্রায় সমস্ত চেষ্টা করেছিলাম এবং কিছুই কাজ করে না।

শুধু যখন আমি ডিফল্ট প্রকল্পে রেফারেন্সড ডিএলএল সেট EntityFrameworkএবং EntityFramework.SqlServerবৈশিষ্ট্য Copy Localথেকে Trueএটা কাজ শুরু হয়নি!


1

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

যৌক্তিক উপায় হ'ল সুনির্দিষ্ট বৈশিষ্ট্য অপসারণ এবং এটিকে ফ্লুয়েন্ট এপিআই দিয়ে প্রতিস্থাপন করুন is এটিই আসল সমাধান


1

আমার একটি কনসোল অ্যাপ্লিকেশন এবং ক্লাস লাইব্রেরি ছিল। ক্লাস লাইব্রেরিতে আমি সত্তা ডেটা মডেল তৈরি করেছি (ক্লাস লাইব্রেরিতে ডান ক্লিক করুন> নতুন আইটেম> ডেটা> ADO.NET সত্তা ডেটা মডেল 6.0) এবং কনসোল অ্যাপ্লিকেশনটির মধ্যে রেফারেন্স রেখেছি। সুতরাং, আপনার কাছে কনসোল অ্যাপ্লিকেশন রয়েছে যা ক্লাস লাইব্রেরির রেফারেন্স এবং ক্লাস লাইব্রেরির ভিতরে আপনার কাছে EF মডেল রয়েছে। আমি যখন টেবিল থেকে কিছু রেকর্ড নেওয়ার চেষ্টা করেছি তখন আমারও একই ত্রুটি হয়েছিল।

আমি এই পদক্ষেপগুলি অনুসরণ করে এই সমস্যাটি সমাধান করেছি:

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

এটাই আমার করণীয় ছিল এবং সবকিছুই নিখুঁতভাবে কাজ করেছিল।

আমি আশা করি এটি সাহায্য করেছে


1

আমারও ত্রুটি আছে। এটি অদ্ভুত যেটি কেবল তখনই ঘটে যখনই আমি আমার মডেলগুলির কারও কাছে জিজ্ঞাসা করতে বা এর তালিকা পেতে আমার dbContext ব্যবহার করি:

var results = _dbContext.MyModel.ToList();

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

ভাগ্যক্রমে, আমরা ALLসমাধানের জন্য নিউজটি পরীক্ষা করার চেষ্টা করেছি , তারপরে সমস্ত কিছু আপডেট করব বা নিশ্চিত করে নিইeverything হ'ল একই সংস্করণ কারণ আমরা লক্ষ্য করেছি যে দুটি প্রকল্পের ওয়েব প্রকল্পে পৃথক EF সংস্করণ রয়েছে। এবং এটি কাজ করে। ত্রুটি চলে গেছে।

সমস্ত সমাধানের জন্য কীভাবে নিউজেট পরিচালনা করবেন তার স্ক্রিনশট এখানে দেওয়া হয়েছে:

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


1

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


0

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


0

আমার একই সমস্যা ছিল, কেবলমাত্র আমার পরীক্ষার প্রকল্পে DBContext রয়েছে এমন প্রকল্প থেকে অ্যাপ কনফিগারেশন ফাইলটি অনুলিপি করেছেন


0

আমি অভিন্ন ব্যতিক্রম নিক্ষেপ ছিল। আমিও যুক্ত

using System.Data; 
using System.Data.Entity;

এবং সবকিছু আবার কাজ করে ফিরে ...


0

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

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