প্রতিষ্ঠানের ফ্রেমওয়ার্ক কোডটি কি প্রথমে উত্পাদনে কিছুটা অর্থহীন / অকেজো এবং উত্পাদনের জন্য একটি ভাল EF কৌশল কী?


29

আমি সম্প্রতি সত্ত্বা ফ্রেমওয়ার্ক ৪.১ কোডের সাথে প্রোগ্রামিং করছি এবং এটি বিকাশের জন্য ভালবাসি তবে কেবল একটি শেষ পরিকল্পনা এবং দ্রুত পরিবর্তিত বৈশিষ্ট্য তালিকার সাথে আমি অ্যাপ্লিকেশনগুলির প্রয়োজনীয়তাগুলি পূরণ করার জন্য ক্রমাগত ক্লাস / ডাটাবেসটি সংশোধন করছি।

বিকাশে, কোনও লাইভ ডেটা নেই এবং আমি সহজেই পুরো ডেটাবেসটি মুছতে পারি তাই এটি নতুন স্কিমার সাথে পুনঃনির্মাণ করা হয় তবে স্পষ্টতই, যখন লাইভ হয় - এটি খুব খারাপ!

আমি দেখতে পাচ্ছি কেবলমাত্র সমাধানগুলি হ'ল হয় মেটাডেটা টেবিলটি ফেলে দেওয়া এবং ম্যানুয়ালি ডাটাবেসটিকে সিঙ্কে রাখা বা মূলত ড্রপ এবং পুনরায় পরীক্ষা করা।

আমি ব্যক্তিগতভাবে প্রথম পদ্ধতিটিকে পছন্দ করি কারণ আমার কাছে মনে হয় যে ডেটা পুনরায় তৈরি এবং স্থানান্তরিত করার চেয়ে কলাম / টেবিল যুক্ত করা অনেক সহজ হবে তবে আমি যদি কিছু মিস না করি তবে এটি কোড ফার্স্ট থেকে সম্পূর্ণ দূরে সরে যাচ্ছে।

সুতরাং প্রশ্নটি সত্যই, কোড প্রথমটি কি কেবল প্রাথমিক বিকাশের বিষয়ে এবং কোনও উত্পাদন পরিবেশের জন্য ইএফ পরিচালনার জন্য একটি ভাল কৌশল কী?


এটি কয়েক দিনের জন্য জিজ্ঞাসা করার অর্থ হয়েছে, এটি এখানে বা স্ট্যাক ওভারফ্লোতে ভাল কিনা তা নিশ্চিত ছিল না ...
উইলহিল

উত্তর:


15

আমার মতে কোডটি প্রথমটির স্বয়ংক্রিয় ডাটাবেস তৈরি কেবলমাত্র উন্নয়নের জন্য। স্ট্যাক ওভারফ্লোতে আমি একই ধরণের প্রশ্নের উত্তর দিয়েছি যেখানে আমি কীভাবে ডাটাবেস আপগ্রেড করতে পারি এবং কেন স্বয়ংক্রিয় কার্যকারিতা উত্পাদনে খারাপ both

ডাটাবেস আপগ্রেড করা আধা-ম্যানুয়াল কাজ। এর পিছনে কোনও স্বয়ংক্রিয় অনির্ধারিত যাদু থাকা উচিত নয় - তদুপরি EF 4.1 তে বর্তমানে এমন কোনও যাদু উপলভ্য নেই ( অ্যাডো.নেট টিম কাজ করছে এমন বৈশিষ্ট্যগুলি সম্পর্কে কেবল কিছু উপস্থাপনা রয়েছে)।

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


আবারো স্বাগতম! - আপনি EF প্রশ্নে দ্রুত! :) ... তুমি ছাড়া আমি কোথায় থাকব জানি না!

কয়েক মাস পরে এবং আমার প্রোগ্রামটি বেশ সমাপ্ত হয়েছে ... আমি এটিকে উত্তর হিসাবে চিহ্নিত করছি, তবে, আমি ভাবছিলাম যে কিছু পরিবর্তন হয়েছে / এমন কোনও সংস্থান আছে যা সহায়তা করতে পারে?
উইলহিল

2
"মাইগ্রেশনস" এর প্রথম প্রকাশ্য পূর্বরূপ প্রকাশিত হয়েছিল। blogs.msdn.com/b/adonet/archive/2011/07/27/…
লাডিস্লাভ Mrnka

ধন্যবাদ, এখন এ খুঁজছেন! আমি কোড ফার্স্টের সাথে বিকাশ করতে পছন্দ করেছি, তবে, পরে পরিবর্তন করার জন্য আমি খুব নার্ভাস / চিন্তিত!
উইলহিল

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

5

আপগ্রেড স্ক্রিপ্টগুলি বজায় রাখুন

ডাটাবেসে নিজেই, কোনও টেবিল বজায় রাখুন যেখানে স্কিমার সংস্করণ সহ একটি রেকর্ড রাখা আছে ।

আপনি যখন অ্যাপ্লিকেশন শুরু করবেন, এটি বাইনারিগুলির দ্বারা ব্যবহৃত সংস্করণটির বিপরীতে সংস্করণটি সনাক্ত করে। যদি এটি পৃথক হয় তবে এটি আপগ্রেড স্ক্রিপ্টগুলি কার্যকর করে (বা ব্যবহারকারীকে জিজ্ঞাসা করে)।

প্রথমে ডাটাবেসটি ব্যাকআপ করতে ভুলবেন না।


পরবর্তী পদক্ষেপ: আপনাকে বরখাস্ত করা হয়েছে;) ডাটাবেস আপডেটগুলি প্রথমে ব্যাকআপ ছাড়া স্বয়ংক্রিয়ভাবে হওয়া উচিত নয় - এবং সম্ভবত ডাউনটাইমে, যখন কোনও ব্যবহারকারী নতুন সংস্করণ চালায় USER আপনার পদ্ধতির নিখুঁত - অনেক ত্রুটি সহ বৃহত্তর মোতায়েন বন্ধ।
টমটম

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

শীর্ষে যদি পরিবর্তনগুলি তুচ্ছ হয়। 2 টিবি টেবিলের ক্ষেত্রটি পরিবর্তন করার চেষ্টা করুন (এবং হ্যাঁ, আমি এটির সাথে কাজ করি - এবং এটি কোনও ডেটা ওয়ারওয়ারও নয়)। আপনি নিজেকে এমন একটি দৃশ্যে পরিণত করেছেন যেখানে আপনি কারিগরি debtণ সংগ্রহ করছেন কারণ আপনি কখনই জমির ক্ষেত্রগুলি যোগ করতে পারেন, কখনও পরিষ্কার করতে পারবেন না।
টমটম

2

প্রশ্নটি কোনওভাবেই ত্রুটিযুক্ত যে এটি প্রোগ্রামিং মডেল এবং রানটাইম পরিবেশের মধ্যে যেখানে কোনও কিছুই নেই তার মধ্যে সংযোগ তৈরি করে।

কোডটি প্রথমে একটি বিকাশের গতি ড্রাইভার এবং এটি রানটাইম সিস্টেমের সাথে সংযুক্ত নয় connected

উত্পাদনে আপনার কাছে সঠিকভাবে একটি কনফিগারেশন সেটিংস থাকবে যা রানটাইমকে ডিবি মডেল মোছার / আপডেট করার সম্ভাবনা অস্বীকার করবে।

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