সত্তা ফ্রেমওয়ার্কের জন্য কীভাবে পুনরায় তৈরি করবেন?


143

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

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

পরে আমি সিঙ্কে মোতায়েনের ডেটাবেস (অ্যাজুরিতে এসকিউএল সার্ভার) পেতে চাইব। আবার, সমস্ত ডেটা বাদ দেওয়ার বিষয়ে আমার আপত্তি নেই - আমি কেবল এটি কাজ করতে চাই।

পরিষ্কার অবস্থায় ফিরে আসার জন্য যে কোনও পদক্ষেপ সরবরাহ করুন। অনেক প্রশংসিত.


DROP DATABASE
টিবিএইচ

উত্তর:


209

নীচের পদক্ষেপগুলি অনুসরণ করুন:

1) প্রথমে ভিজ্যুয়াল স্টুডিওতে সার্ভার এক্সপ্লোরারে যান, এই প্রকল্পের ".mdf" ডেটা সংযোগগুলি সংযুক্ত আছে কিনা তা পরীক্ষা করে দেখুন, যদি থাকে তবে ডান ক্লিক করুন এবং মুছুন।

2) সলিউশন এক্সপ্লোরার এ যান, সমস্ত ফাইল আইকন দেখান ক্লিক করুন।

3) App_Data এ যান, ডান ক্লিক করুন এবং এই প্রকল্পের জন্য সমস্ত ".mdf" ফাইল মুছুন।

4) মাইগ্রেশন ফোল্ডারটি ডান ক্লিক করে মুছুন এবং মুছুন।

5) এসকিউএল সার্ভার ম্যানেজমেন্ট স্টুডিওতে যান, নিশ্চিত করুন যে এই প্রকল্পের জন্য ডিবি নেই, অন্যথায় এটি মুছুন।

6) ভিজ্যুয়াল স্টুডিওতে প্যাকেজ ম্যানেজার কনসোলে যান এবং টাইপ করুন:

  1. Enable-Migrations -Force
  2. Add-Migration init
  3. Update-Database

7) আপনার অ্যাপ্লিকেশন চালান

দ্রষ্টব্য: step ষ্ঠ অংশে, আপনি যদি "ফাইল সংযুক্ত করতে পারেন না ..." ত্রুটি পান তবে এটি সম্ভবত এসকিউএল সার্ভারে ডাটাবেস ফাইলগুলি মুছেনি বলেই সম্ভবত।


অসাধারণ! এটি কাজ করেছে, আপনাকে ধন্যবাদ! সত্যিই খুব সহায়ক। স্থাপনা ডাটাবেস (অ্যাজুর এসকিউএল) পুনরায় তৈরি করার জন্য কি পদক্ষেপগুলি একই রকম?
টবি শার্প

হাই @ টবিশার্প, কোনও সমস্যা নেই। আপনার ডাটাবেসে কোনও ডেটা না থাকলে আপনি এই পদক্ষেপগুলি অনুসরণ করতে পারেন তবে আপনার যদি ডেটা থাকে তবে পদক্ষেপগুলি এক রকম নয় the
লিন

আমার কাছে থাকা কোনও ডেটা নেই।
টবি শার্প

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

3
আপনি যদি "ফাইল সংযুক্ত করতে পারেন না ..." ত্রুটিটি পেয়ে থাকেন তবে আপনি বিশ্বাস করেন যে আপনি সবকিছু মুছে ফেলেছেন,
অ্যান্ডি

44

আমি যুক্ত করতে চাই যে লিনের উত্তরটি সঠিক।

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

  1. একটি নতুন এমডিএফ তৈরি করুন এবং এটি পুরানো এমডিএফ হিসাবে একই নাম দিন, এটি একই ফোল্ডারের স্থানে রাখুন। আপনি একটি নতুন প্রকল্প তৈরি করতে এবং একটি নতুন এমডিএফ তৈরি করতে পারেন। এমডিএফ আপনার পুরানো টেবিলের সাথে মেলে না, কারণ এটি মুছে ফেলতে যাচ্ছিল। সুতরাং সঠিক ফোল্ডারে একটি পুরানো তৈরি করুন বা অনুলিপি করুন।
  2. সার্ভার এক্সপ্লোরার এ এটি খুলুন [সমাধান এক্সপ্লোরার থেকে এমডিএফ ডাবল ক্লিক করুন]
  3. এটি সার্ভার এক্সপ্লোরারে মুছুন
  4. সমাধান এক্সপ্লোরার থেকে এটি মুছুন
  5. চালান update-database -force [প্রয়োজনে বল প্রয়োগ করুন]

হয়ে গেছে, আপনার নতুন ডিবি উপভোগ করুন

11/12/14 আপডেট করুন - আমি ব্রেকিং ডিবি পরিবর্তন করার সময় আমি এই সমস্ত সময় ব্যবহার করি। আমি দেখতে পেয়েছি যে এটি আপনার ডিগ্রিগুলিকে আসল ডিবিতে ফিরিয়ে আনার এক দুর্দান্ত উপায়:

  • ডিবিটিকে আসল করে ফেলা হয়
  • এটিকে কারেন্টে ফিরিয়ে আনতে সাধারণ মাইগ্রেশন চালান

    1. Update-Database -TargetMigration:0 -force [এটি সমস্ত সারণী এবং সমস্ত ডেটা ধ্বংস করবে]]
    2. Update-Database -force [প্রয়োজনে বল প্রয়োগ করুন]

1
সাহায্য করে দারুণ খুশি ... আমি আমার উত্তর আপডেট করতে যাচ্ছি। আমি সম্প্রতি সমস্ত পরিবর্তন রোলব্যাক করার একটি আরও ভাল উপায় খুঁজে পেয়েছি।
স্টিভ কোলম্যান

8

এটি আমার পক্ষে কাজ করেছে:

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

1
হ্যাঁ, আমাকে যা করতে হয়েছিল তা হ'ল এমডিএফ মুছে ফেলা, ওয়েলকনফিগে সংযোগের স্ট্রিং আপডেট করা, তারপরে অ্যাপ্লিকেশনটি চালানো এবং একটি নতুন অ্যাকাউন্ট নিবন্ধিত করুন। এটি স্বয়ংক্রিয়ভাবে নতুন ডাটাবেসে সমস্ত টেবিল তৈরি করেছে।
ড্যান বেচার্ড 21

3

এই প্রশ্নটি ডেটা সম্পর্কে যত্ন না নিয়েই সংশোধিত হয়েছে, কখনও কখনও ডেটা রক্ষণাবেক্ষণ অপরিহার্য।

যদি তা হয় তবে, ডাটাবেসে ইতিমধ্যে এখানে একই নামের সাথে টেবিল রয়েছে কীভাবে সত্তা ফ্রেমওয়ার্কের দুঃস্বপ্ন থেকে পুনরুদ্ধার করার পদক্ষেপগুলির একটি তালিকা আমি লিখেছিলাম: সত্তা ফ্রেমওয়ার্কের দুঃস্বপ্ন থেকে কীভাবে পুনরুদ্ধার করা যায় - ডাটাবেসে ইতিমধ্যে একই নামের টেবিল রয়েছে

স্পষ্টতই ... একজন মডারেটর আমার পোস্ট মুছে ফেলতে উপযুক্ত দেখেছে তাই আমি এটি এখানে আটকিয়ে দেব:

সত্তা ফ্রেমওয়ার্ক দুঃস্বপ্ন থেকে কীভাবে পুনরুদ্ধার করবেন - ডাটাবেসটিতে ইতিমধ্যে একই নামের সারণী রয়েছে

বর্ণনা : আপনার দল ইএফ-তে নতুন হওয়ার সময় আপনি যদি আমাদের মতো হন তবে আপনি এমন একটি অবস্থানে পৌঁছে যাবেন আপনি হয় কোনও নতুন স্থানীয় ডাটাবেস তৈরি করতে পারবেন না বা আপনি আপনার প্রোডাকশন ডেটাবেজে আপডেট প্রয়োগ করতে পারবেন না। আপনি একটি পরিষ্কার 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 থেকে তৈরি করা যুক্ত করতে হবে। তাদের যদি স্থানীয় পরিবর্তন হয় এবং মাইগ্রেশন মুলতুবি থাকে তবে আমি তাদেরকে আবার মাস্টার হিসাবে তাদের ডিবি তৈরি করতে, তাদের বৈশিষ্ট্য শাখায় স্যুইচ করুন এবং স্ক্র্যাচ থেকে সেই স্থানান্তর স্ক্রিপ্টগুলি পুনরায় তৈরি করার পরামর্শ দেব।


1

@ লিনের দুর্দান্ত উত্তরে কেবল যুক্ত করতে চাই:

5) বি। আপনার যদি এসকিউএল ম্যানেজমেন্ট স্টুডিও না থাকে তবে "এসকিউএল সার্ভার অবজেক্ট এক্সপ্লোরার" এ যান। যদি আপনি লোকালডিবি "এসকিউএল সার্ভার অবজেক্ট এক্সপ্লোরার" এ আপনার প্রকল্পের ডিবি দেখতে না পান তবে ম্যানুয়ালি তালিকায় এটি যুক্ত করতে "এসকিউএল সার্ভার যুক্ত করুন" বোতামটি ক্লিক করুন। তারপরে আপনি তালিকা থেকে ডিবি মুছতে পারেন।


আপনি যদি কোনও উত্তরে কিছু যুক্ত করতে চান তবে দয়া করে নতুন উত্তর পোস্ট করার চেয়ে উত্তরটিতে একটি মন্তব্য যুক্ত করুন।
অলিভার

1
আমি এটা সম্পর্কে অবগত ছিল না। সুতরাং এখন আপনি নিজের উত্তরটি একটি মন্তব্যে স্থানান্তর করতে পারেন এবং এই উত্তরটি মুছে ফেলতে পারেন কারণ প্রযুক্তিগতভাবে এটি প্রশ্নের সম্পূর্ণ (সম্পূর্ণ) উত্তর নয় :-)
অলিভার

0

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


0

আমার সমাধানটি এর জন্য সবচেয়ে উপযুক্ত :
- আপনার এমডিএফ ফাইল মোছা
- আপনার ডিবি পুনরায় তৈরি করতে চান।

অর্ডার করার জন্য আপনার ডাটাবেস পুনঃ আপনি ভিসুয়াল স্টুডিও ব্যবহার সংযোগ যোগ প্রয়োজন।

পদক্ষেপ 1 : সার্ভার এক্সপ্লোরার এ যান নতুন সংযোগ যুক্ত করুন (বা একটি অ্যাড ডিবি আইকন সন্ধান করুন)।

পদক্ষেপ 2 : পরিবর্তনের ডেটাউত্স করতে মাইক্রোসফট SQL সার্ভার ডাটাবেস ফাইলের

ধাপ 3 : কোনো ডেটাবেস নাম আপনি ইচ্ছা যোগ ডাটাবেস ফাইলের নাম ক্ষেত্র (বাঞ্ছনীয় একই নামের আপনি web.config আছে। AttachDbFilename অনুষঙ্গ)

পদক্ষেপ 4 : ব্রাউজ ক্লিক করুন এবং আপনি যেখানে এটি পছন্দ করতে চান সেখানে নেভিগেট করুন।

পদক্ষেপ 5 : প্যাকেজ ম্যানেজার কনসোল রান কমান্ডupdate-database

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