এই প্রশ্নটি ডেটা সম্পর্কে যত্ন না নিয়েই সংশোধিত হয়েছে, কখনও কখনও ডেটা রক্ষণাবেক্ষণ অপরিহার্য।
যদি তা হয় তবে, ডাটাবেসে ইতিমধ্যে এখানে একই নামের সাথে টেবিল রয়েছে কীভাবে সত্তা ফ্রেমওয়ার্কের দুঃস্বপ্ন থেকে পুনরুদ্ধার করার পদক্ষেপগুলির একটি তালিকা আমি লিখেছিলাম: সত্তা ফ্রেমওয়ার্কের দুঃস্বপ্ন থেকে কীভাবে পুনরুদ্ধার করা যায় - ডাটাবেসে ইতিমধ্যে একই নামের টেবিল রয়েছে
স্পষ্টতই ... একজন মডারেটর আমার পোস্ট মুছে ফেলতে উপযুক্ত দেখেছে তাই আমি এটি এখানে আটকিয়ে দেব:
সত্তা ফ্রেমওয়ার্ক দুঃস্বপ্ন থেকে কীভাবে পুনরুদ্ধার করবেন - ডাটাবেসটিতে ইতিমধ্যে একই নামের সারণী রয়েছে
বর্ণনা : আপনার দল ইএফ-তে নতুন হওয়ার সময় আপনি যদি আমাদের মতো হন তবে আপনি এমন একটি অবস্থানে পৌঁছে যাবেন আপনি হয় কোনও নতুন স্থানীয় ডাটাবেস তৈরি করতে পারবেন না বা আপনি আপনার প্রোডাকশন ডেটাবেজে আপডেট প্রয়োগ করতে পারবেন না। আপনি একটি পরিষ্কার EF পরিবেশে ফিরে যেতে চান এবং তারপরে বেসিকগুলিতে আটকাতে চান তবে আপনি পারবেন না। যদি আপনি এটি উত্পাদনের জন্য কাজ করে পান তবে আপনি একটি স্থানীয় ডিবি তৈরি করতে পারবেন না এবং যদি আপনি এটি স্থানীয় পক্ষে কাজ করে থাকেন তবে আপনার প্রোডাকশন সার্ভার সিঙ্কের বাইরে চলে যাবে। এবং অবশেষে, আপনি কোনও উত্পাদন সার্ভার ডেটা মুছতে চান না।
লক্ষণ : আপডেট-ডাটাবেস চালানো যায় না কারণ এটি তৈরি করা স্ক্রিপ্টটি চালানোর চেষ্টা করছে এবং ডাটাবেসটিতে ইতিমধ্যে একই নামের সারণী রয়েছে।
ত্রুটির বার্তা: System.Data.SqlClient.SqlException (0x80131904): ডাটাবেসে ইতিমধ্যে '' নামে একটি অবজেক্ট রয়েছে।
সমস্যার পটভূমি : ডিএফও নামক ডাটাবেসের একটি টেবিলের উপর ভিত্তি করে কোডটি কোথায় রয়েছে তার তুলনায় বর্তমান ডাটাবেসটি কোথায় রয়েছে তা EF বুঝতে পারে __ মাইগ্রেশনহিসটরি। এটি যখন মাইগ্রেশন স্ক্রিপ্টগুলিতে দেখে তখন এটি পুনর্বিবেচনার চেষ্টা করে যেখানে স্ক্রিপ্টগুলির সাথে এটি সর্বশেষ ছিল। যদি এটি না পারে তবে এটি তাদের যথাযথভাবে প্রয়োগ করার চেষ্টা করে। এর অর্থ, এটি প্রাথমিক তৈরি স্ক্রিপ্টে ফিরে যায় এবং আপনি যদি ইউপি কমান্ডের প্রথম অংশটি দেখেন তবে এটি টেবিলে ক্রিয়েট টেবিল হবে যা ত্রুটিটি ঘটছিল।
এটিকে আরও বিশদে বোঝার জন্য, আমি এখানে দুটি রেফারেন্স রেফারেন্স দেখার পরামর্শ দিচ্ছি:
https://msdn.microsoft.com/en-us/library/dn481501(v=vs.113).aspx
সমাধান : আমাদের কী করা দরকার তা হল এই ক্রিয়েটবেল কমান্ডগুলি প্রয়োগ না করে বর্তমান ডাটাবেস আপ-টু ডেট রয়েছে তা ভেবে EF কে চালিত করা। একই সময়ে, আমরা এখনও এই কমান্ডগুলির উপস্থিতি চাই যাতে আমরা নতুন স্থানীয় ডাটাবেস তৈরি করতে পারি।
পদক্ষেপ 1: প্রোডাকশন ডিবি পরিষ্কার করুন,
প্রথমে আপনার প্রোডাকশন ডিবি ব্যাকআপ করুন। এসএসএমএসে, ডাটাবেসটিতে ডান ক্লিক করুন, "কার্য> এক্সপোর্ট ডেটা-স্তর অ্যাপ্লিকেশন ..." নির্বাচন করুন এবং প্রম্প্টগুলি অনুসরণ করুন। আপনার প্রোডাকশন ডাটাবেসটি খুলুন এবং ডিবিও মুছুন / ছাড়ুন ___ অভিবাসন ইতিহাসের টেবিল table
পদক্ষেপ 2: স্থানীয় পরিবেশ পরিষ্কার
আপনার মাইগ্রেশন ফোল্ডারটি খুলুন এবং এটি মুছুন। আমি ধরে নিচ্ছি আপনি যদি প্রয়োজন হয় তবে এই সমস্ত কিছু গিট থেকে ফিরিয়ে আনতে পারবেন।
পদক্ষেপ 3:
প্যাকেজ ম্যানেজারে ইনিশিয়াল পুনরুদ্ধার করুন, "সক্ষম-মাইগ্রেশন" চালান (ইএফ আপনাকে একাধিক প্রসঙ্গে থাকলে -ConttextTypeName ব্যবহার করতে অনুরোধ করবে)। "অ্যাড-মাইগ্রেশন ইনিশিয়াল -ভারবস" চালান। এটি বর্তমান কোডের উপর ভিত্তি করে স্ক্র্যাচ থেকে ডেটাবেস তৈরি করতে প্রাথমিক স্ক্রিপ্ট তৈরি করবে। পূর্ববর্তী কনফিগারেশন। সি-তে যদি আপনার কোনও বীজ ক্রিয়াকলাপ থাকে, তবে এটি অনুলিপি করুন।
পদক্ষেপ 4: ট্রিক ইএফ
এই মুহুর্তে, আমরা আপডেট-ডাটাবেস চালিত হলে , আমরা মূল ত্রুটি পেয়ে যাব। সুতরাং, আমাদের এই কমান্ডগুলি চালনা না করে EF- কে এটি আপডেট হওয়ার ভঙ্গিতে চালিত করতে হবে। সুতরাং, আপনি সবেমাত্র তৈরি প্রাথমিক মাইগ্রেশনে আপ পদ্ধতিতে যান এবং এগুলি সম্পর্কে সমস্ত মন্তব্য।
পদক্ষেপ 5: আপডেট-ডাটাবেস
আপ প্রক্রিয়া চালানোর জন্য কোনও কোড ছাড়াই, ইএফ dbo তৈরি করবে ___ সঠিকভাবে এন্ট্রি সহ মাইগ্রেশন হিস্টরি টেবিলটি বলে যে এটি এই স্ক্রিপ্টটি সঠিকভাবে চালিয়েছে। আপনি চান এবং এটি পরীক্ষা করে দেখুন। এখন, কোডটি নিরঙ্কুশ করে সংরক্ষণ করুন। আপনি যদি EF আপ টু ডেট বলে মনে করে তা পরীক্ষা করতে চান তবে আপনি আবার আপডেট-ডেটাবেস চালাতে পারেন। এটি ক্রিয়েটবেল সমস্ত কমান্ডের সাথে উপরের পদক্ষেপটি চালায় না কারণ এটি মনে করে যে এটি ইতিমধ্যে এটি হয়ে গেছে।
পদক্ষেপ:: নিশ্চিত করুন EF সত্যই আপ টু ডেট you
যদি আপনার যদি এমন কোড থাকে যা এখনও মাইগ্রেশন প্রয়োগ না করে থাকে তবে আমি এটি করেছি ...
"অ্যাড-মাইগ্রেশন মিসিংমাইগ্রেশনস" চালান এটি কার্যত একটি খালি স্ক্রিপ্ট তৈরি করবে। কোডটি ইতিমধ্যে ছিল বলে প্রাথমিক মাইগ্রেশন স্ক্রিপ্টে এই টেবিলগুলি তৈরি করার জন্য সঠিকভাবে সঠিক কমান্ড ছিল, তাই আমি স্রেফ তৈরি এবং কেবল সমাপ্ত ড্রপ কমান্ডগুলিকে আপ এবং ডাউন পদ্ধতিগুলিতে কাটলাম।
এখন, আবার আপডেট-ডাটাবেস চালান এবং এটি আপনার নতুন মাইগ্রেশন স্ক্রিপ্টটি কার্যকর করে দেখুন, ডাটাবেসে উপযুক্ত সারণী তৈরি করে।
পদক্ষেপ 7: পুনরায় নিশ্চিত করুন এবং প্রতিশ্রুতিবদ্ধ।
নির্মাণ, পরীক্ষা, চালান। নিশ্চিত হয়ে নিন যে সবকিছু চলছে এবং তারপরে পরিবর্তনগুলি প্রতিশ্রুতিবদ্ধ।
পদক্ষেপ 8: আপনার দলের বাকিরা কীভাবে এগিয়ে যেতে হবে তা জানতে দিন।
যখন পরের ব্যক্তি আপডেট হয়, EF জানতে পারবে না যে এটি কীভাবে আঘাত করেছে যা এর আগে চালিত স্ক্রিপ্টগুলি বিদ্যমান নেই। তবে, ধরে নিই যে স্থানীয় ডাটাবেসগুলি উড়িয়ে দেওয়া এবং পুনরায় তৈরি করা যেতে পারে, এটি সব ভাল। তাদের তাদের স্থানীয় ডাটাবেস ফেলে রাখা এবং এটি আবার EF থেকে তৈরি করা যুক্ত করতে হবে। তাদের যদি স্থানীয় পরিবর্তন হয় এবং মাইগ্রেশন মুলতুবি থাকে তবে আমি তাদেরকে আবার মাস্টার হিসাবে তাদের ডিবি তৈরি করতে, তাদের বৈশিষ্ট্য শাখায় স্যুইচ করুন এবং স্ক্র্যাচ থেকে সেই স্থানান্তর স্ক্রিপ্টগুলি পুনরায় তৈরি করার পরামর্শ দেব।
DROP DATABASE