ADO.NET সত্তা ফ্রেমওয়ার্ক: আপডেট উইজার্ড টেবিল যোগ করবে না


93

আমি আমার প্রকল্পে একটি নতুন ADO.Net সত্তা ডেটা মডেল যুক্ত করেছি এবং মডেলটিতে টেবিল যুক্ত করতে আপডেট উইজার্ড ব্যবহার করেছি । নির্বাচিত পাঁচটি সারণী ডিজাইনের পৃষ্ঠে যুক্ত করা হয়েছে। অন্য দুটি টেবিল যুক্ত হবে না। আমি এগুলিকে উইজার্ডে নির্বাচন করি এবং সমাপ্তি ক্লিক করি, তবুও তারা কখনও ডিজাইনের পৃষ্ঠায় প্রদর্শিত হয় না।

এটি কি কোনও বাগ, বা এমন কিছু পরিস্থিতি রয়েছে যেখানে মডেলটিতে কোনও নকশা যুক্ত করা যায় না (নকশার মাধ্যমে)?


আপডেট: এক্সএমএল (* .edmx) সমস্যাটি প্রকাশ করে।

<!--Errors Found During Generation:
warning 6013: The table/view 'FooBar.dbo.Roles' does not 
have a primary key defined and no valid primary key could be inferred. 
This table/view has been excluded. To use the entity you will need to 
review your schema, add the correct keys and uncomment it.-->
<!--<EntityType Name="Roles">
    <Property Name="role_id" Type="decimal" />
    <Property Name="role_desc" Type="nvarchar" MaxLength="30" />
</EntityType>-->

8
এটিতে আরও বেশি ভোট আপ হওয়া উচিত। আমার ধারণা নেই ভিজ্যুয়াল স্টুডিওটি টেবিলটি যুক্ত করতে পারে না কারণ .edmx ফাইলটি কেবল ত্রুটিটি যায় place আশা করি তাদের ভি 2 এ একটি ডায়লগ বক্স থাকবে!
জন বুবরিস্কি

+1 - আমার ক্ষেত্রে, কোনও ত্রুটির বার্তা ছিল না।
teynon

আপনি যেমন উল্লেখ করেছেন, যে টেবিলগুলি আমদানি করবে না তাদের প্রাথমিক কী নেই। একটি পিকে যুক্ত করুন এবং আপনি যেতে ভাল।
এরিক

উত্তর:


46

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

আমি মনে করি না যে আপনি ঠিক এমন পরিস্থিতিতে রয়েছেন, তবে সমাধানের জন্য এটি আপনাকে সাধারণ ধারণা দেওয়া উচিত: এক্সএমএল এ যান এবং প্রশ্নের মধ্যে থাকা সারণির রেফারেন্সগুলি সন্ধান করুন।


4
আমি ঠিক এই খুব সমস্যা পেয়েছি, আমি মডেল থেকে একটি টেবিল মুছে ফেলেছি এবং যখন আমি আবার এটি যুক্ত করতে গিয়েছিলাম তখন ভিজ্যুয়াল ডিজাইনার এটি ডাটাবেসে উপস্থিত হিসাবে দেখায় নি। এটিকে গোল করার জন্য আমি .edmx ফাইলটি থেকে পাঠ্যটি মুছলাম, তবে এক্সএমএলকে বিশৃঙ্খলাবদ্ধ করে তুললাম managed আপনি যদি এটি করেন তবে দয়া করে প্রথমে ফাইলটি ব্যাক আপ করুন। ভাগ্যক্রমে, আমি গিট ডিফের সাথে মিশ্রিত ট্যাগটি সন্ধান করতে সক্ষম হয়েছি।
গ্র্যান্ডমাস্টারফ্লুশ

42

সমস্ত টেবিলগুলিতে প্রাথমিক কীগুলি সেট করুন বা প্রতিটি টেবিলের যে কোনও কলামে কেবল একটি চেক-বাক্স "নালকে অনুমতি দিন" সেট করুন। এটা আমার জন্য কাজ করে :)


4
এটি আমি বিশ্বাস করি এটি সঠিক উত্তর, কমপক্ষে এটি আমার পক্ষে ছিল। ধন্যবাদ!
এরিক

@ পারভিনদার, আমি আমার বেশিরভাগ প্রকল্পে এই সমস্যাটি নিয়ে লড়াই করেছি। অবশেষে, আপনার উত্তরটি আমার কাছে এটি পরিষ্কার করে দিয়েছে। আমার ক্ষেত্রে, যোগদানের টেবিলে আমি নাল নয় কী ক্ষেত্র বা কেবলমাত্র প্রাথমিক কী নির্দিষ্ট করে নি। এটি ঠিক করার পরে, আমি মনের শান্তি পেয়েছিলাম। অনেক অনেক ধন্যবাদ
প্যাটসনলাইনার

আমি রেজোলিউশনের মাধ্যমে যা বুঝলাম তা হ'ল আমরা সত্তা মডেলটিতে কোনও টেবিল যুক্ত করতে পারি না যদি i) সেই টেবিলটির কোনও প্রাথমিক কী নেই বা (ii) সেই টেবিলটিতে মঞ্জুরি নাল কলাম নেই।
মুরতুজা খান

10
  1. সারণির কাঠামো পরিবর্তন করুন এবং একটি প্রাথমিক কলাম যুক্ত করুন। মডেল আপডেট করুন।

  2. এক্সএমএল সম্পাদকে .EDMX ফাইলটি সংশোধন করুন এবং এই নির্দিষ্ট সারণির জন্য ট্যাগের অধীনে একটি নতুন কলাম যুক্ত করার চেষ্টা করুন। (কাজ করবে না)

  3. প্রস্থানকারী টেবিলটিতে একটি নতুন প্রাথমিক কলাম তৈরি করার পরিবর্তে, বিদ্যমান সমস্ত কলামগুলিকে জড়িত করে আমি একটি সংমিশ্রিত কী তৈরি করব ((কাজ)

সত্তা ফ্রেমওয়ার্ক: সত্তা মডেলের কোনও প্রাথমিক কী ছাড়াই ডেটাটেবল যুক্ত করা হচ্ছে।


আমি এই একই ইস্যু মধ্যে দৌড়ে। সত্তা মডেলটি টেবিলটি যুক্ত করছিল, তবে এটি ডিজাইনারে প্রদর্শিত হচ্ছে না। আমি কোড এ এটি অ্যাক্সেস করতে পারে না। আমি একটি আইডি ফিল্ড যুক্ত করেছি কী ... কাজ করেছে!
রবি রাম

6

আমারও এই সমস্যা ছিল, উপরের সমস্ত কিছুই আমার পক্ষে কার্যকর হয়নি। আমার জন্য যা সাহায্য করেছিল তা নিম্নলিখিত ছিল।

আপনি যখন কোনও ডাটাবেসের সাথে সংযোগ স্থাপনের চেষ্টা করেন যে ডেটাবেসটিতে বিভিন্ন ব্যবহারকারী থাকতে পারে তার বিভিন্ন শংসাপত্র এটি গ্রহণ করতে পারে। আসুন, ডি পর্যন্ত ব্যবহারকারী এ।

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

এটি শুরু করার জন্য আপনার এসকিউএল সার্ভারের সাথে সংযুক্ত এমএস এসকিউএল সার্ভার ম্যানেজমেন্ট স্টুডিও এবং ভিজ্যুয়াল স্টুডিওতে আপনি সংযোগ স্থাপনের চেষ্টা করছেন এমন ডাটাবেস নির্বাচন করুন। 'Your_dbname' -> সুরক্ষা -> ব্যবহারকারীদের নীচে আপনি ব্যবহারকারীদের একটি তালিকা পান। আপনি লগইন করতে চেষ্টা করে ব্যবহারকারীর নামটিতে রাইট ক্লিক করুন এবং বৈশিষ্ট্যগুলি নির্বাচন করুন। একটি উইন্ডো খোলে। 'জেনারেল' (ডিফল্টরূপে নির্বাচিত) পৃষ্ঠাটি নির্বাচন করুন এবং ট্যাবটির অধীনে 'ডাটাবেস ভূমিকা সদস্যতা' নিশ্চিত করুন যে 'db_datareader' এবং 'db_datawrite' নির্বাচিত হয়েছে।

দ্রষ্টব্য: আপনি যখন এমএস এসকিউএল সার্ভার ম্যানেজমেন্ট স্টুডিওতে লগ ইন করেন তখন নিশ্চিত হয়ে নিন যে আপনি এমন কোনও ব্যবহারকারীর সাথে লগ ইন করেছেন যা এই বিকল্পগুলি সক্ষম / অক্ষম করতে পারে ...


5

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


4
এটি কাজ করে, লগগুলিতে বোকা কোনও ত্রুটি বা সতর্কতা উপস্থিত হয় না!
রোলানডোসিসি


1

আমার এটির সমাধানটি হ'ল সম্পূর্ণ মডেলটি মুছে ফেলা এবং আমি যে নতুন টেবিলগুলি চাই সেগুলি সহ এটি পুনরায় পড়া।

আমি দুর্ঘটনাক্রমে একবার ডিজাইনারের একটি টেবিল মুছে ফেললাম এবং এটি আর পড়তে পারিনি। সুতরাং সম্পূর্ণ মডেল অপসারণ এবং এটি পড়া।

এটির সাথে আমারও কিছু সমস্যা ছিল ( অ্যাডো.নেট সত্তা ডেটা মডেল সঠিকভাবে আপডেট হচ্ছে না )


1

এটি সর্বশেষতম সংস্করণে সমাধান করা হয়েছে (পরিবেশ: ভিএস 2012, নেট ফ্রেমওয়ার্ক 4.5)। .Edmx ফাইলটি সহজ সরান এবং প্রয়োজনীয় সারণী / সঞ্চিত পদ্ধতি / দর্শন যুক্ত করুন। প্রাথমিক কী নেই এমন সারণী / দর্শনটি কেবলমাত্র পাঠ্য সারণী / দর্শন হিসাবে তৈরি করা হবে।

সারণী / দর্শন 'TABLE_NAME' তে একটি প্রাথমিক কী সংজ্ঞায়িত করা হয়নি। কীটি অনুমান করা হয়েছে এবং সংজ্ঞাটি কেবল পঠনযোগ্য সারণী / দর্শন হিসাবে তৈরি করা হয়েছে।


4
ত্রুটিটি কিছু ক্ষেত্রে EF 5.0
গ্রেগ জেড

0

আপনাকে পুরো মডেলটি মুছতে হবে না (এটি কয়েকশ টেবিল হতে পারে!)।

উইজার্ড "নতুন যুক্ত" আইটেমগুলি পরিচালনা করতে পারে তবে কিছু পরিবর্তন যেমন যৌগিক কীগুলি পরিবর্তন করা এবং কলামগুলির নাম পরিবর্তন করা - এটি কী করতে হবে তা জানে না - তাই এটি চেষ্টা করে না - এবং জিনিসগুলি সিঙ্কের বাইরে চলে যায়।

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


0

যার আগে এই কাজটি করা হয়নি তার জন্য কেবল আরও কিছু বিশদ ছুঁড়ে ফেলা হচ্ছে। আমি আপডেট 4 ইনস্টল করে ভিজ্যুয়াল স্টুডিও 2013 ব্যবহার করছি। আমি একটি টেবিলের সাথে কয়েকটি ক্ষেত্র যুক্ত করেছি, আমার মডেল থেকে টেবিলটি মুছে ফেললাম তারপর আপডেট করতে গিয়েছিলাম এবং এটি আমাকে কোনও টেবিল চেক করতে দেয় না।

আমার কাছে একটি প্রাথমিক কী আছে।

আমি একটি নতুন পরীক্ষার টেবিল তৈরি করেছি, এটি প্রদর্শিত হয়েছিল এবং এটি আমাকে এটি পরীক্ষা করতে দেয় তবে আমার আসলটি নয়।

আমি এটি এক্সএমএলে আগে কখনও খুলিনি এবং এটি কীভাবে করব তাও জানতাম না। আপনি .edmx ফাইলটিতে ডান ক্লিক করুন এবং "ওপেন করুন" - এক্সএমএল সম্পাদকটি চয়ন করুন।

প্রশ্নের টেবিলটিতে ঠিক আছে, এটিতে নতুন ক্ষেত্রও ছিল (আজব)।

আমি এর সমস্ত উল্লেখ মুছে ফেলেছি (কয়েকবার সময় নিয়েছে) - আপনি একটি মুছে ফেলার পরে এবং সংরক্ষণ করার পরে, যদি আপনি এটি খোলার চেষ্টা করেন এবং এটি প্রদর্শিত হবে না এবং "এক্সএমএল দেখুন" চয়ন করুন - ত্রুটিগুলি দেখুন এবং মূলত আপনি এটি পরিষ্কার না করা পর্যন্ত বাউন্সিং বল অনুসরণ করুন।

আশা করি অতিরিক্ত বিশদটি কাউকে সাহায্য করবে।

জো


0

আমি খুঁজে পাওয়া একটি সহজ উপায় হ'ল (এসকিউএল সার্ভার ম্যানেজমেন্ট স্টুডিওতে) আইএনটি প্রকারের একটি আইডি কলাম যুক্ত করুন, "নালসকে অনুমতি দিন" নির্বাচন করুন এবং কলামের বৈশিষ্ট্যগুলির (আইডির) >> আইডেন্টিটি স্পেসিফিকেশন >> চেক (আইডেন্টিটি) আছে, এবং তৈরি করা নিশ্চিত ইনক্রিমেন্ট সেট করা আছে।

উপরের কাজটি শেষ হয়ে গেলে, .edmx উইন্ডোতে ফিরে যান, ডান ক্লিক করুন এবং ডেটাবেস থেকে আপডেট মডেল


0

আপনি একটি প্রাথমিক কী কলাম ক্রস টেবিল যুক্ত করতে পারেন। তাহলে সমস্যা সমাধান হচ্ছে is


0

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

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

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