এটির একটি DefiningQuery আছে তবে InsertFunction উপাদান নেই… ত্রুটিযুক্ত


123

এই জিনিসটি আমাকে পাগল করছে এবং ত্রুটিটি আমার কাছে যথেষ্ট অর্থহীন:

সত্তা সেট 'টেবিলবি' আপডেট করতে অক্ষম কারণ এটির একটি DefiningQuery রয়েছে এবং বর্তমান অপারেশনটিকে সমর্থন করার জন্য কোনও উপাদান এলিমেন্টে নেই।

আমার টেবিলগুলি এভাবে রাখা হয়েছে:

TableA
আইডিএ (পরিচয়, প্রাথমিক কী)
...

TableB
আইডিএ (টেবিলএইডিএর জন্য এফকে)
ইন্ট ভাল

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

কোনো সমস্যা??


সম্পাদনা: অ্যালেক্সের পরামর্শ অনুসারে সমাধানটি হ'ল:

  1. এডিএমএক্স ফাইলটিতে ডান ক্লিক করুন, এক্সএমএল সম্পাদক সহ ওপেন নির্বাচন করুন
  2. এডিএমএক্সে স্টোরটি সন্ধান করুন: স্টোরেজমোডেলস উপাদান
  3. সম্পূর্ণরূপে DefiningQuery সরান
  4. স্টোরটির নাম পরিবর্তন করুন: স্কিমা = "ডিবিও" থেকে স্কিমা = "ডিবিও" (অন্যথায়, নামটি অবৈধ বলে কোডটি একটি ত্রুটি তৈরি করবে)
  5. দোকান সরান: নাম সম্পত্তি

আমি কীটিটি যেমন ছিল তেমনই রেখেছি, যেহেতু আমার পক্ষে ঠিক ছিল যে উভয় কলামই কীটির অংশ।


6
আপডেটের জন্য ধন্যবাদ - ধাপে ধাপে নির্দেশাবলী এই EF নতুনকে ASP.NET MVC টিউটোরিয়াল অ্যাপ্লিকেশনটিতে কাজ করতে সহায়তা করেছে!
অ্যাডাম নিল

এই জন্য Thnx! আমার একটি সমস্যা ছিল যে EF প্রাথমিক কী রয়েছে এমন স্কিওল সার্ভার 2000 টেবিলের জন্য উপযুক্ত এডএমএক্স ফাইল তৈরি করে না। তবে এই নির্দেশনাটি আমাকে রক্ষা করেছে :)
100

4
৩.৫ বছর পরে, এবং এই পোস্টটি এখনও পিপিএলকে সহায়তা করছে, এই ক্ষেত্রে, এমই! ... প্রতি: বর্ণনামূলক ধাপে ধাপে ধাপে ধাপে ধাপে ধাপে (এটি কাজ করে) এবং অ্যালেক্সকে ধন্যবাদ >>> ব্রাভো!
ন্যানোনার্ড

সমাধানটি আমার পক্ষে কাজ করেছে .. ধন্যবাদ
ডেলাভেগ

গোপনীয়তাটি "স্টোর:" কে স্কিমা সংজ্ঞা থেকে সরিয়েছিল। খুব সুন্দর
গিলহেরেম

উত্তর:


141

ভাল যখন কোনও প্রাইমারিকি ছাড়াই কোনও টেবিলের মুখোমুখি হয় তখন এটি ভিউ হিসাবে ধরা হয়।

এবং ভিউগুলি EDMX ফাইলে প্রদর্শিত হবে (দেখতে কোনও এক্সএমএল সম্পাদক খুলুন) স্টোরেজমোডেল \ এনটিটিসেট [এন] \ সংজ্ঞায়িত উপাদান উপাদান।

আপনি যখন কোনও সংজ্ঞায়িত ফাংশন না যুক্ত করেন সত্তাটি কেবল পঠনযোগ্য হয়ে ওঠে। আপনার প্রতিটি সন্নিবেশ, আপডেট এবং মোছার জন্য 3 টি পরিবর্তনীয় ফাংশন (ওরফে স্টোরেড প্রক্রিয়া) প্রয়োজন।

তবে আপনার কাছে দুটি বিকল্প রয়েছে:

মূল সংজ্ঞাটি পরিবর্তন করুন:

  1. এবং ইএফকে বোঝান যে এটি যা দেখায় তা সত্যই একটি টেবিল table
  2. অথবা উপযুক্ত পরিবর্তন ফাংশন যুক্ত করুন

আপনার ক্ষেত্রে আমি সুপারিশ (1)।


আমি এই ত্রুটিটি পেয়েছি যখন আমি কোনও জংশন সারণিতে একটি সত্তা যুক্ত করার চেষ্টা করছিলাম। আপনার পরামর্শ এটি স্থির, ধন্যবাদ!
ওয়াল্টার স্ট্যাবোজ

এটি দুর্দান্ত ..., টিএনএসস
মোহন গুন্ডলাপল্লি

প্রথমে আপনি ডাটাবেস থেকে তৈরি .edmx ফাইলটিতে "আপডেট মডেল থেকে ডেটাবেস" ক্লিক করতে ভুলবেন না
বাশার আবু শামা

আমি একই ইস্যুটির মুখোমুখি আছি, আজব অংশটি হ'ল, এটি আমাদের স্থানীয় এবং পরীক্ষার পরিবেশে ঠিকঠাক কাজ করছে, এটি কেবল ক্লায়েন্টের পরিবেশে (নিস্তেজ) কাজ করছে না
মোক্স শাহ

13

সারণীতে একটি প্রাথমিক কী যুক্ত করুন। এটাই. সমস্যা সমাধান.

ALTER TABLE <TABLE_NAME>
ADD CONSTRAINT <CONSTRAINT_NAME> PRIMARY KEY(<COLUMN_NAME>)

6

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


5

টেবিলে প্রাথমিক কী যুক্ত করুন, এডএমএক্স মডেল থেকে মডেলটি মুছুন, তারপরে ডাটাবেস থেকে আপডেট নির্বাচন করুন, বিল্ড এবং রান করুন ...... কাজ করে


1

@Palantir। আপনার উভয় টেবিলের প্রাথমিক কী সেট আছে তা যাচাই করুন এবং কোনও টেবিলে সেট করা একাধিক প্রাথমিক কীগুলি সম্পর্কে সতর্কতা অবলম্বন করুন।


0
  1. আপনাকে ম্যানুয়ালি .EDMX ফাইলটি নোটপ্যাড বা নোটপ্যাড ++ বা আপনার পছন্দের যে কোনও পাঠ্য সম্পাদক এ খুলতে হবে।
  2. এডিএমএক্স-এ এন্ট্রি সন্ধান করুন: স্টেপ 1-এ খোলা ফাইলটিতে স্টোরেজমোডেলগুলি।
  3. DefiningQuery উপাদান সন্ধান করুন এবং এই ট্যাগটি পুরোপুরি সরান remove
  4. স্টোরটি সন্ধান করুন: স্কিমা = "ডিবিও" থেকে স্কিমা = "ডিবিও" (আপনি যদি এই পদক্ষেপটি এড়িয়ে যান তবে এটির নামের ত্রুটিটি অবৈধ))
  5. সংরক্ষণ করুন এবং ফাইলটি বন্ধ করুন।

আশা করি এটি সমস্যার সমাধান করবে।

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