আমি কেন এই ত্রুটি পাচ্ছি: নিম্নলিখিত এনটিটিসেট / অ্যাসোসিয়েশনসেট - সত্ত্বা 1 এর জন্য কোনও ম্যাপিং নির্দিষ্ট করা হয়নি?


96

আমি মডেল প্রথম পদ্ধতির সাথে সত্ত্বা ফ্রেমওয়ার্ক 4 ব্যবহার করছি।

আমি প্রকল্পটি শুরু করেছি, সত্তাগুলি ডিজাইন করেছি এবং ডেটাবেস তৈরি করেছি। সবকিছু ঠিকঠাক কাজ করেছে।

তারপরে আমার ফিরে যেতে হবে এবং আমার মডেলটিতে অন্য একটি সত্তা যুক্ত করা দরকার। তবে, আমি ইডিএমএক্স-তে কোনও সত্তাকে টেনে আনার সাথে সাথে আমি এই ত্রুটিটি পেয়েছি:

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

ঠিক আছে! আমার সবেমাত্র টেবিলটিতে এন্টি 1 টি মানচিত্র করা দরকার .. তবে ওহে! আমি মডেল ফার্স্ট পদ্ধতির ব্যবহার করছি, আমি যখন ডিডিএল তৈরি করি তখন এটি আমার জন্য টেবিলটি তৈরি করে আশা করি।

এই ত্রুটিটি সম্পর্কে আমি কীভাবে কাজ করব?


4
সুতরাং আপনার মডেল থেকে ডাটাবেস স্ক্রিপ্ট উত্পন্ন করতে পারেন?
লাডিস্লাভ মৃঙ্কা

উত্তর:


147

মডেল-প্রথমটির সাথে ইএফ 4 কাজ করার কারণ এটি।

আপনি যখন প্রথম কোনও মডেল-প্রথম মডেল তৈরি করেন তখন এটি এমন অবস্থায় থাকে যে এসএসডিএলটির অস্তিত্ব নেই। আপনি সত্ত্বাগুলি টেনে আনতে পারেন, সেগুলি সংযুক্ত করতে পারেন এবং ততক্ষণে, আপনি যদি EDMX ফাইলে এসএসডিএলটি দেখুন তবে আপনি দেখতে পাবেন যে সত্তার কোনওটিরই এসএসডিএলে কোনও স্টোরেজ টেবিল নেই।

আপনি যখন Generate Database From Modelপ্রসঙ্গ মেনু আইটেমটি ক্লিক করেন তখন তা পরিবর্তন হয় । বিভ্রান্তিকর অংশটি হ'ল এই ক্রিয়াটি কেবল একটি ডিডিএল স্ক্রিপ্ট তৈরি করার চেয়ে বেশি করে। আসলে, এটি এসডিডিএল তথ্য অন্তর্ভুক্ত করতে ইডিএমএক্স ফাইল পরিবর্তন করে। এই মুহুর্ত থেকে, ইডিএমএক্স ফাইল এমন একটি রাজ্যে প্রবেশ করবে যেখানে ডিজাইনার / সিএসডিএল-এর প্রতিটি সত্তাকে অবশ্যই এসএসডিএলে কোনও সত্তায় মানচিত্র তৈরি করতে হবে। যদি কেউ মানচিত্র না দেয় তবে এটি একটি সংকলন সময় ত্রুটি ট্রিগার করবে:

নিম্নলিখিত এনটিটিসেট / অ্যাসোসিয়েশনসেটের জন্য কোনও ম্যাপিং নির্দিষ্ট করা হয়নি - (সত্তা নাম)

আর একটি মজার তথ্য হ'ল এটি এমন ধরণের ত্রুটি নয় যা সংকলন রোধ করবে। এটি প্রকৃতপক্ষে আউটপুট শ্রেণির পাঠাগার তৈরি করবে। এটি একটি সতর্কতা বা কিছু হতে হবে না?

এই ত্রুটি রোধ করতে, নতুন সত্তা সন্নিবেশ করার পরে আপনাকে যা করতে হবে তা হ'ল Generate Database From Modelআবার। এটি এসএসডিএল আপডেট করবে এবং ম্যাপিংগুলি ঠিক করবে।

সম্পাদনা

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


4
বিডি পরিবর্তনের বিরুদ্ধে আমার মডেলটি আপডেট করার পরে আমি একই সমস্যা পেয়েছি (এটি ভাল হতে পারে না, কারণ আমার পদ্ধতির মডেল-প্রথম নয়)।
বালানজা

4
@ বালানজা, আপনি যখন মডেল-প্রথম ব্যবহার করছেন না এবং আপনি যখন ডাটাবেসের ভিত্তিতে আপনার মডেলটি আপডেট করেন, আপনি সার্ভারের কোনও টেবিল মুছলে আপনি এই ত্রুটিটি পাবেন কারণ EF ডিজাইনার সত্তাটি স্বয়ংক্রিয়ভাবে মুছবেন না। যখন আপনি ম্যানুয়ালি সত্তার প্রকারটি মুছবেন তখন ত্রুটিটি চলে যাবে
André Pena

সত্তা ডেটা মডেলের xML ফাইলে আমি সরাসরি আমার পরিবর্তন করেছি। আমার কাছে টেবিল এবং ফাংশনগুলির স্তূপ ছিল এবং কিছু অমিলের ঝুঁকি ছিল এইভাবে আমি নিজে এটি করেছিলাম।
ব্যাট_প্রগ্রাম 4

এটি সুপার সহায়ক। এছাড়াও, আপনি যদি মডেল-প্রথম ব্যবহার করেন এবং "ডাটাবেস থেকে আপডেট" এবং নতুন টেবিলগুলি পান তবে আপনারও ত্রুটি থাকবে। তবে মডেল থেকে জেনারেট ডেটাবেস চালানো (আসলে উত্পন্ন স্ক্রিপ্টটি কার্যকর করার দরকার নেই - এটি আপনার ডেটা মেরে ফেলবে!) আপনার কোডের ম্যাপিংয়ের সমস্যাগুলি ঠিক করবে এবং এটি এগিয়ে যাওয়ার ক্ষেত্রে আপনার কোনও সমস্যা হবে না।
ব্রায়ান ওয়ারশওয়া

4
ইতিমধ্যে মোতায়েন এসকিউএল সার্ভার সিই ডাটাবেসের জন্য আপনি কীভাবে স্কিমা আপডেটিং পরিচালনা করবেন? এটি সম্পূর্ণ সম্পর্কিত না হলে এটি একটি পৃথক প্রশ্নে স্থানান্তরিত করতে পারে
FYK

35

আমি দেখতে পেয়েছিলাম যে আমি একই ত্রুটি পেয়েছি কারণ দুটি সত্তার মধ্যে সমিতি তৈরি করার পরে আমি রেফারেন্সিয়াল সীমাবদ্ধতা তৈরি করতে ভুলে গিয়েছিলাম।


13
এফওয়াইআই: সমিতির বৈশিষ্ট্যগুলি পরীক্ষা করুন এবং নীচে "রেফারেন্সিয়াল কনস্ট্রেন্ট" খালি থাকবে। উপবৃত্তাকারে ক্লিক করুন এবং একটি সীমাবদ্ধতা তৈরি করুন।
প্যাট্রিস ক্যালভি

এটি আমাকে সাহায্য করেছিল। আমাকে আমার উত্স সত্তা থেকে আমার নেভিগেশনাল সত্তার সাথে 1% সম্পর্ক তৈরি করতে হয়েছিল।
duyn9uyen

21

ত্রুটি 3027: নিম্নলিখিত এনটিটিসেট / অ্যাসোসিয়েশনসেটের জন্য কোনও ম্যাপিং নির্দিষ্ট করা হয়নি ... "- সত্ত্বা ফ্রেমওয়ার্কের মাথাব্যাথা

আপনি যদি সত্তা ফ্রেমওয়ার্কের সাথে মডেল বিকাশ করছেন তবে আপনি এই বিরক্তিকর ত্রুটিটি মাঝে মাঝে চালাতে পারেন:

ত্রুটি 3027: নিম্নলিখিত অ্যান্টিসিট / অ্যাসোসিয়েশনসেট [সত্তা বা সমিতির নাম] এর জন্য কোনও ম্যাপিং নির্দিষ্ট করা হয়নি

EDM- এ সবকিছু ঠিকঠাক লাগলে এটি কোনও অর্থবোধ করতে পারে না, তবে এটি সাধারণত কারণ EDM এর সাথে এই ত্রুটির কোনও যোগসূত্র নেই। এটিতে যা বলা উচিত তা হ'ল "আপনার ডাটাবেস ফাইলগুলি পুনরায় তৈরি করুন"।

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

সুতরাং, সংক্ষেপে, সমাধানটি হ'ল: " আপনি যদি প্রথম মডেল বিকাশ করে থাকেন তবে আপনার ইডিএম আপডেট করার পরে প্রতিবার ডাটাবেস মডেল তৈরি করতে ভুলবেন না I আমি আশা করি আপনার সমস্যার সমাধান হয়ে গেছে"।


এটি জেনারেট ডেটাবেস মডেল করতে একই ত্রুটির জন্য কাজ করেছে ব্যতিক্রমগুলি সাফ করতে সাহায্য করেছে
kolexinfos

7

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


6

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

ইস্যুটি সমাধান করার জন্য, আমি EDMX ফাইলে আপত্তিজনক টেবিলের রেফারেন্স খুঁজে পেতে একটি বাহ্যিক সম্পাদক (নোটপ্যাড ++) ব্যবহার করেছি এবং তারপরে (সাবধানতার সাথে) সারণীর সমস্ত উল্লেখ মুছে ফেলেছি। আমি দুঃখের সাথে বলছি যে EDMX ফাইলটি এই স্থানে প্রথম স্থান পেয়েছিল তা আমি জানি না।


5

আমার একটি টেবিল পরিবর্তন ছিল এবং এটি এডিএমএক্স মডেল ব্রাউজারের দ্বারা নিশ্চিত হওয়া হিসাবে শেষে 1 নম্বর (যেমন MyEntity1এবং একটি MyEntity) দিয়ে অন্য সত্তা তৈরি করেছে। দুটি সত্তা সম্পর্কে কিছু একসাথে প্রক্রিয়াকরণ বিভ্রান্ত।

টেবিলটি অপসারণ এবং এটি পুনরায় যুক্ত করা এটি স্থির করে।


মনে রাখবেন যে যদি টিএফএস হুক আপ হয় তবে মুছে ফেলার পরে এডএমএক্স-এর একটি চেক-ইন করুন। তারপরে এবং কেবলমাত্র সর্বশেষটি পান এবং এটি একটি নির্দিষ্ট দুটি পদক্ষেপের প্রক্রিয়াতে পুনরায় যুক্ত করুন। অন্যথায় টিএফএস একই নামযুক্ত সত্তা (আইস) মুছে ফেলা এবং পুনরায় যুক্ত করার সাথে বিভ্রান্ত হয়ে পড়ে যা সমস্যার কারণ বলে মনে হয়।


টেবিল পরিবর্তনের পরে আমারও একই সমস্যা ছিল। মডেলটির অধীনে বেশ কয়েকটি স্থানে আমি 1 এবং 2 নম্বর (MyEntity1, MyEntity2) সহ একই সত্তা পেয়েছি। আমি প্রতিটি শাখায় (ডায়াগ্রাম, সত্তার প্রকারগুলি ইত্যাদি) দেখেছি এবং MyEntity এবং MyEntity এর প্রতিটি উদাহরণ সরিয়েছি [n]। ভাল পরিমাপের জন্য আমি একটি "ক্লিন সলিউশন" করেছি এবং তারপরে ডাটাবেস থেকে আপডেট হয়ে কেবল আমার মাইটিটি পুনরায় যুক্ত করতে পারি।
MsTapp

4

আমার পক্ষে দ্রুততর উপায় হ'ল টেবিলগুলি মুছে ফেলা এবং সেগুলি পুনরায় যুক্ত করা। এটি তাদের অটো-ম্যাপ করেছে। :)


2

যারা Database Firstনতুন পদ্ধতির সন্নিবেশ করার পরে আপনাকে যা করতে হবে সেগুলি ব্যবহার করতে Generate Database From Modelআবার আপনার .edmxফাইলটিতে ডান ক্লিক করে নির্বাচন করুন selectGenerate Database From Model...


0

আমি ডাটাবেস থেকে একটি সারণী মুছে ফেলা হয়েছে যখন এই ত্রুটি ছিল। ইডিএমএক্স ডায়াগ্রামে ডান ক্লিক করে, সম্পত্তিগুলিতে গিয়ে, সম্পত্তি উইন্ডোতে তালিকা থেকে টেবিলটি নির্বাচন করে এবং ডায়াগ্রাম থেকে এটি মুছতে (কী মুছুন ব্যবহার করে) এটিকে সমাধান করুন।


0
  1. সলিউশন এক্সপ্লোরারে যান, অনুসন্ধান বোতামটি ক্লিক করুন
  2. উভয় পরীক্ষা করা ছেড়ে দিন Search within file content এবংSearch External Files
  3. আপনার ম্যাপিং স্বীকৃত নয় এমন সত্ত্বাগুলির নাম টাইপ করুন।
  4. সমস্যার সাথে সম্পর্কিত সমস্ত ফাইল মুছুন। এগুলি সম্ভবত একই অনুপস্থিত সত্তার নামে নামকরণ করা হবে। ফাইলটিতে আপনার প্রসঙ্গ শ্রেণীর নামের কোনও ফাইল মুছবেন না, বিশেষত যদি তাদের এক্সটেনশনগুলি .cs বা .tt হয়। প্রসঙ্গ .cs ফাইলের মধ্যে
  5. অনুপস্থিত সত্তা উল্লেখ করে কোডের সমস্ত লাইন সরিয়ে দিন। তারা এগুলি দেখতে পাবেন:

    public virtual DbSet< Entity1> Entity1 { get; set; }
    

এই ত্রুটিটি ডাটাবেস থেকে মুছে ফেলা টেবিলগুলির পক্ষে সাধারণ।

যখন কেউ ডাটাবেসে কোনও টেবিলটি ফেলে দেয় বা একটি কেবলমাত্র web.config.connectionStringsইএফ ম্যাপযুক্ত ডাটাবেসের জন্য পরিবর্তন করে একটি নতুনকে নির্দেশ করে এবং মূল ম্যাপিংগুলি তৈরি করতে ব্যবহৃত সমস্যাটি হয় না।

এটি এই নতুন ডিবি 3027 ত্রুটি সহ এই সত্তাগুলি উপস্থিত নেই।


0

আমি যখন সঞ্চিত পদ্ধতির জন্য একটি কাস্টম ফলাফল তৈরি করার চেষ্টা করছিলাম তখন আমার ত্রুটি হয়েছিল এবং ধরে নেওয়া হয়েছিল যে এটি একটি সত্তা হতে পারে।

সমাধানটি হ'ল আমি কেবল মডেল ব্রাউজারে একটি জটিল ধরণের তৈরি করেছি এবং ফলস্বরূপ "সম্পাদনা ফাংশন আমদানি" এর জন্য নির্ধারিত করেছি।

আমি এটিকে এখানে যুক্ত করব কারণ দেখে মনে হচ্ছে এই সমস্যাটি হ'ল গুগল আপনাকে কোথায় নিয়ে যায় যখন আপনি এই ত্রুটিটি পান।


0

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


0

ডেটাবেস থেকে আপডেট মডেল আমার পক্ষে কাজ করে না।

আমাকে দ্বন্দ্বপূর্ণ সত্তাটি সরিয়ে ফেলতে হয়েছিল, তারপরে ডেটাবেস থেকে আপডেট মডেলটি কার্যকর করে শেষ পর্যন্ত সমাধানটি পুনর্নির্মাণ করতে হয়েছিল। এর পরে, সবকিছু ঠিকঠাক কাজ করে।


0

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

কেবল পুনরায় যুক্ত করা এবং আমার ব্যবহারকারীকে অ্যাক্সেস দেওয়ার ফলে সমস্যার সমাধান হয়েছে।


0

আমার মনে হয় এডএমএক্স থেকে পুনরায় নামকরণ এবং পুনরায় যুক্ত করার আগে কিছু টেবিল স্পষ্টভাবে মুছে ফেলা না থেকে আমি এটি পেয়েছি। পরিবর্তে, আমি সবেমাত্র টেবিলগুলির নাম পরিবর্তন করেছিলাম এবং তারপরে ডেটাবেস থেকে একটি আপডেট মডেল করেছি, এটি ভেবে যে এগুলি চলে গেছে, এবং তাদের মডেল থেকে মুছে ফেলবে। আমি তখন ডেটাবেস থেকে আরেকটি আপডেট মডেল করেছি এবং নাম পরিবর্তিত টেবিলগুলি যুক্ত করেছি।

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

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