সত্তা ফ্রেমওয়ার্ক। সারণীতে সমস্ত সারি মুছুন


280

সত্তা ফ্রেমওয়ার্ক ব্যবহার করে কীভাবে আমি টেবিলের সমস্ত সারি দ্রুত সরিয়ে ফেলতে পারি?

আমি বর্তমানে ব্যবহার করছি:

var rows = from o in dataDb.Table
           select o;
foreach (var row in rows)
{
    dataDb.Table.Remove(row);
}
dataDb.SaveChanges();

তবে এটি কার্যকর করতে দীর্ঘ সময় লাগে।

কোন বিকল্প আছে?


22
উত্তরগুলি TRUNCATEপড়লে আমি অবাক হয়েছি কেন এই বিজ্ঞাপনগুলির কোনওটিই বিদেশী কী বাধা সম্পর্কে চিন্তা করে না।
গার্ট আর্নল্ড

2
আমি এই ধরণের উত্তরগুলি যে প্রত্যেকে মাইক্রোসফ্ট এসকিউএল সার্ভার ব্যবহার করছে তা গ্রহণের জন্য আমি কীভাবে আশ্চর্য হয়েছি, যদিও সত্তা ফ্রেমওয়ার্কের অন্যান্য ডাটাবেসের জন্য সমর্থন যতদূর আমি তথ্য পেতে পারি এবং অবশ্যই এই প্রশ্নটি বেশ কয়েক বছর আগেই পূর্বাভাস দিয়েছিল । টিপ: যদি কোনও উত্তর বর্গাকার বন্ধনীগুলির (যেমন [TableName]:) এসকিউএল স্টেটমেন্টে টেবিলের নামগুলি উদ্ধৃত করে তবে তা পোর্টেবল নয়।
মার্ক আমেরিকা 4'18

উত্তর:


293

যারা এটি গুগল করছে এবং আমার মতো এখানে শেষ হয়েছে, আপনি বর্তমানে এটি EF5 এবং EF6 এ করছেন:

context.Database.ExecuteSqlCommand("TRUNCATE TABLE [TableName]");

অনুমান প্রসঙ্গে ক System.Data.Entity.DbContext


20
এফওয়াইআই, ট্রানসেট ব্যবহার করার জন্য ব্যবহারকারীর অবশ্যই টেবিলে পরিবর্তনের অনুমতি থাকতে হবে। ( স্ট্যাকওভারফ্লো.com / প্রশ্নগুলি / 47373৫০৩০// )
অ্যালেক্স

7
@ অ্যালেক্স কেবল ত্রুটিটি নিয়ে একটি টন সময় নষ্ট করেছেন "বস্তুটি মাই টেবিলটি খুঁজে পাওয়া যায়নি কারণ এটি বিদ্যমান নেই বা আপনার অনুমতি নেই।" ঠিক সেই কারণেই - ALF অনুমতিগুলি খুব কমই EF অ্যাপ্লিকেশনগুলিতে মঞ্জুরিপ্রাপ্ত হয় এবং ত্রুটি বার্তাটি আপনাকে সত্যিই একটি বন্য হংস তাড়াতে প্রেরণ করে।
ক্রিস মোসচিনি

8
আমার টেবিল যেহেতু একটি বিদেশী কী সম্পর্কের অংশ ছিল সেহেতু আমার মধ্যে সমস্যা ছিল, যদিও এটি সম্পর্কের লিফ টেবিল ছিল। প্রসঙ্গটি ব্যবহার করে আমি ক্ষতবিক্ষত হয়েছি at ডেটাবেস.এক্সেকিউটস এসকিউএলকম্যান্ড ("[আগ্রহগুলি থেকে মুছে ফেলুন")); পরিবর্তে
ড্যান সিশার্পস্টার

2
মনে রাখবেন যে [এখানে পালানো এসকিউএল সার্ভারের সাথে সুনির্দিষ্ট হলেও TRUNCATEকমান্ডটি নয় - এটি এএনএসআই এসকিউএল এর অংশ এবং এটি বেশিরভাগ এসকিউএল উপভাষায় (যদিও এসকিউলাইট নয়) কাজ করবে।
মার্ক আমেরি

207

সতর্কতা: নীচেরগুলি কেবলমাত্র ছোট টেবিলের জন্য উপযুক্ত (চিন্তা করুন <1000 সারি)

এখানে একটি সমাধান রয়েছে যা সারিগুলি মোছার জন্য সত্তা কাঠামো (এসকিউএল নয়) ব্যবহার করে, সুতরাং এটি এসকিউএল ইঞ্জিন (আর / ডিবিএম) নির্দিষ্ট নয়।

এটি ধরে নিয়েছে যে আপনি এটি পরীক্ষা বা অন্য কিছু অনুরূপ পরিস্থিতির জন্য করছেন। উভয় ক্ষেত্রেই

  • তথ্য পরিমাণ কম বা
  • পারফরম্যান্সে কিছু যায় আসে না

কেবল কল করুন:

VotingContext.Votes.RemoveRange(VotingContext.Votes);

এই প্রসঙ্গে অনুমান:

public class VotingContext : DbContext
{
    public DbSet<Vote> Votes{get;set;}
    public DbSet<Poll> Polls{get;set;}
    public DbSet<Voter> Voters{get;set;}
    public DbSet<Candidacy> Candidates{get;set;}
}

পরিপাটি কোডের জন্য আপনি নিম্নলিখিত এক্সটেনশন পদ্ধতিটি ঘোষণা করতে পারেন:

public static class EntityExtensions
{
    public static void Clear<T>(this DbSet<T> dbSet) where T : class
    {
        dbSet.RemoveRange(dbSet);
    }
}

তারপরে উপরেরটি হয়ে যায়:

VotingContext.Votes.Clear();
VotingContext.Voters.Clear();
VotingContext.Candidacy.Clear();
VotingContext.Polls.Clear();
await VotingTestContext.SaveChangesAsync();

আমি প্রতিটি টেস্টকেস রানের জন্য আমার পরীক্ষামূলক ডাটাবেস পরিষ্কার করার জন্য সম্প্রতি এই পদ্ধতির ব্যবহার করেছি (এটি প্রতিটি সময় স্ক্র্যাচ থেকে ডিবি পুনরুদ্ধার করার চেয়ে স্পষ্টতই দ্রুততর, যদিও আমি উত্পন্ন মুছে ফেলা কমান্ডগুলির ফর্মটি পরীক্ষা করিনি))


এটা ধীর হতে পারে কেন?

  1. EF সমস্ত সারি পাবে (ভোটিং কনটেক্সট.ভোটস)
  2. এবং তারপরে তাদের মুছে ফেলার জন্য তাদের আইডি ব্যবহার করবেন (ঠিক কীভাবে কোনও ব্যাপার হয় তা নিশ্চিত নয়)।

সুতরাং যদি আপনি মারাত্মক পরিমাণে ডেটা নিয়ে কাজ করছেন তবে আপনি এসকিউএল সার্ভার প্রক্রিয়াটি (এটি সমস্ত স্মৃতি গ্রাস করবে) এবং আইআইএস প্রক্রিয়াটির জন্য একই জিনিসটি EF এসকিউএল সার্ভারের মতো সমস্ত ডেটা ক্যাশে করবে বলে হত্যা করবে। যদি আপনার টেবিলটিতে মারাত্মক পরিমাণে ডেটা থাকে তবে এটি ব্যবহার করবেন না।


1
দুর্দান্ত উত্তর, 10 এর একটি ফ্যাক্টর দ্বারা আমার সমস্ত সারি কোড মুছুন! নোট করুন যে আমার ক্লিয়ার () স্ট্যাটিক এক্সটেনশন পদ্ধতির নাম পরিবর্তন করতে হবে ClearDbSet () এর মতো কিছুতে যেহেতু আমার প্রকল্পের অন্য কোথাও সংজ্ঞায়িত একটি পরিষ্কার () স্থির এক্সটেনশন পদ্ধতি রয়েছে।
ডজি_কোডার

1
আপনি যে কারণে ডডজি_কোর্ডার নাম পরিবর্তন করেছেন তা প্রয়োজনীয় নয়, যেহেতু এক্সটেনশন পদ্ধতিটি ডিবিসেট, আইডিবিসেট এবং আইনিউবারেবল নয়, আইলিস্ট, আইকোলিকেশন, আইসিচে বা অন্য কোনও ইন্টারফেসের প্রয়োজন যা "ক্লিয়ার" করা আবশ্যক। এক্সটেনশন পদ্ধতির পছন্দটি সেই ধরণের হয় যার উপর সংজ্ঞা দেওয়া হয়। তবে যদি এটি আপনার কাছে আরও পরিষ্কার হয় এবং তা অপ্রয়োজনীয় শব্দ না করে তবে দুর্দান্ত! হ্যাঁ, আমি পারফরম্যান্সকে বুদ্ধিমান করে তোলে! চিয়ার্স!
আহমেদ আলেজো

আমি খুশি যে আপনি কেবল ছোট টেবিলের জন্য বলেছেন। আমি আশা করি লোকেরা আপনার ব্যাখ্যাটির গুরুত্ব পাবে। কারণ এই উপায়টি সিনট্যাকটিক চিনি, সঠিক উপায় হ'ল রন সিজম পরামর্শ দিয়েছেন। কারণ আপনি এটি অপসারণের আগে ডেটা লোড করবেন না। এটি করার এই উপায়টি দেখানোর জন্য এবং ব্যাখ্যা করার জন্য যদিও চিয়ার্স।
yedavtxt

3
এটি পরিচয় কীটি পুনরায় সেট করে না। সুতরাং আপনি যদি 10 টি রেকর্ড সাফ করেন, পরেরটি এখনও 11 হবে
MDave

89

এসকিউএল-র TRUNCATE TABLEকমান্ডটি ব্যবহার করা দ্রুততম হবে কারণ এটি টেবিলে চালিত হয় এবং স্বতন্ত্র সারিগুলিতে নয়।

dataDb.ExecuteStoreCommand("TRUNCATE TABLE [Table]");

ধরে dataDbনেওয়া একটি DbContext( একটি নয় ObjectContext), আপনি এটি মোড়ানো এবং এই পদ্ধতিটি ব্যবহার করতে পারেন:

var objCtx = ((System.Data.Entity.Infrastructure.IObjectContextAdapter)dataDb).ObjectContext;
objCtx.ExecuteStoreCommand("TRUNCATE TABLE [Table]");

যখন আপনি এই শুধু পরিবর্তন চেষ্টা একটি অনুমতি ত্রুটির সম্মুখীন হলে TRUNCATE TABLEকরতেDELETE FROM
codeMonkey

1
@ কোডমেঙ্কি কেবল খেয়াল করুন যে এগুলি বিভিন্ন অপারেশন, তবে (প্রায়) একই নেট প্রভাব ফেলবে 👍
রুডি ভিজার

3
কিন্তু মুছে ফেলা আইডেন্টিটি বীজ পুনরায় সেট করে না। এটি কিছু পরিস্থিতিতে সমস্যাযুক্ত হতে পারে।
স্টিভ

43
var all = from c in dataDb.Table select c;
dataDb.Table.RemoveRange(all);
dataDb.SaveChanges();

11
এটি ব্যবহার করা উচিত নয় কারণ আপনি একটি সম্পূর্ণ নির্বাচন কার্যকর করেন এবং কেবল একটি মুছার পরিবর্তে একটি মুছুন। সময় পারফরম্যান্স দর্শন থেকে এটি একটি বড় নয়!
হেলবাবি

2
@ হেলবাবি না হলে এটি খুব কমই বলা হয় এবং সুতরাং অভিনয়টি বেশ অপ্রাসঙ্গিক।
অ্যালেক্স

6
এমনকি যদি এটি খুব কমই বলা হয় এটি খারাপ। EF পরিবর্তন ট্র্যাকিংয়ের কারণে ধীরে ধীরে ধীরে ধীরে 3000 এন্ট্রি সহ একটি সারণী 30 সেকেন্ডের বেশি সময় নিতে পারে।
সামান্য

1
এটি কেবলমাত্র ছোট টেবিলের জন্য উপযুক্ত (<1000 সারি)
আমির টয়ইটো

আমার ইউনিট টেস্টগুলিতে আমার ইন-মেমরি ডেটাবেসের জন্য নিখুঁত :)
সাইমনগেটস

38
using (var context = new DataDb())
{
     var ctx = ((System.Data.Entity.Infrastructure.IObjectContextAdapter)context).ObjectContext;
     ctx.ExecuteStoreCommand("DELETE FROM [TableName] WHERE Name= {0}", Name);
}

অথবা

using (var context = new DataDb())
{
     context.Database.ExecuteSqlCommand("TRUNCATE TABLE [TableName]");
}

1
তবে আমি যখন এটি লিখি "" ক্যোয়ারী। ডিলিট (); " - "মুছুন" স্বীকৃত নয়
ঝেনিয়া

1
আপনার বর্তমান প্রকল্পে সিস্টেম.ডাটা.সত্তা এবং সত্তা ফ্রেম ওয়ার্কের রেফারেন্স যুক্ত করুন
মণীশ মিশ্র

মুছে ফেলা কী এক্সটেনশন পদ্ধতি?
আহমেদ আলেজো

যতদুর আমি জানি সেখানে একটি এক্সটেনশন পদ্ধতি নয় Deleteউপর IQueryable- আমি মনীশ মত EntityFramework.Extended কিছু ব্যবহার করছিলেন অনুমান করছি: github.com/loresoft/EntityFramework.Extended
নাল

আমি আমার উত্তরটি সম্পাদনা করেছি, আগে এটি বিভ্রান্তিকর ছিল। @ নুল, আপনি ঠিকই বলেছেন, .Deleteএটি একটি কাস্টম এক্সটেনশন ছিল এবং উত্তর পোস্ট করার উত্তাপে প্রথমে এই প্রথাটির সংজ্ঞা উল্লেখ করতে ভুলে গিয়েছিল .Delete। :)
মণীশ মিশ্র

23

আপনি Foreach ছাড়া এটি করতে পারেন

dataDB.Table.RemoveRange(dataDB.Table);
dataDB.SaveChanges();

এটি সমস্ত সারি সরিয়ে ফেলবে


এটি কী নেভিগেশন সম্পত্তি আইটেম কাটা হবে?
জন হরিণ

19

এটি যে কোনও স্কেল ব্যবহার করা এড়ানো যায়

using (var context = new MyDbContext())
{
    var itemsToDelete = context.Set<MyTable>();
    context.MyTables.RemoveRange(itemsToDelete);
    context.SaveChanges();
}

9

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

আমি public static void Clear<T>(this DbSet<T> dbSet)পদ্ধতির চেষ্টা করেছি , তবে নতুন সারিগুলি .োকানো হয়নি। আরেকটি অনর্থক হ'ল পুরো প্রক্রিয়াটি ধীর গতিতে, যেমন সারিগুলি একে একে মুছে ফেলা হয়।

সুতরাং, আমি TRUNCATEকাছে যেতে চাই, যেহেতু এটি অনেক দ্রুত এবং এটি রোলব্যাকযোগ্যও । এটি পরিচয় পুনরায় সেট করে।

সংগ্রহস্থল প্যাটার্ন ব্যবহার করে উদাহরণ:

public class Repository<T> : IRepository<T> where T : class, new()
{
    private readonly IEfDbContext _context;

    public void BulkInsert(IEnumerable<T> entities)
    {
        _context.BulkInsert(entities);
    }

    public void Truncate()
    {
        _context.Database.ExecuteSqlCommand($"TRUNCATE TABLE {typeof(T).Name}");
    }
 }

 // usage 
 DataAccess.TheRepository.Truncate();
 var toAddBulk = new List<EnvironmentXImportingSystem>();

 // fill toAddBulk from source system
 // ...

 DataAccess.TheRepository.BulkInsert(toAddBulk);
 DataAccess.SaveChanges();

অবশ্যই, ইতিমধ্যে উল্লিখিত হিসাবে, এই সমাধানটি বিদেশী কী দ্বারা উল্লিখিত সারণীগুলি ব্যবহার করা যাবে না (ট্রানকাট ব্যর্থ হয়)।


দুটি মন্তব্য: 1. টেবিলের নামটি [...] এ মোড়ানো উচিত। আমার ক্লাস / টেবিলগুলির মধ্যে একটিতে "লেনদেন" বলা হয় যা একটি এসকিউএল কীওয়ার্ড। ২. ইউনিট পরীক্ষার জন্য যদি ডিবিতে সমস্ত সারণী মুছে ফেলার লক্ষ্য হয় তবে বিদেশী কী সীমাবদ্ধতার সাথে সমস্যাগুলি সহজেই টেবিলগুলিকে এমনভাবে প্রক্রিয়া করার জন্য আদেশ দেওয়া যেতে পারে যাতে পিতামাতার টেবিলে আগে ছকগুলি কাটা যায়।
ক্রিস্টোফ

@ ক্রিসটফ - ১. হ্যাঁ, এটি সত্য। আমি এটি মিস করেছি, কারণ আমি কীওয়ার্ডগুলি এড়াতে সর্বদা সারণীর নাম রাখি কারণ এটি সমস্যার কারণ হতে পারে। 2. যদি আমি সঠিকভাবে মনে রাখবেন, FKs দ্বারা সমর্থিত টেবিল আরোপ করা যাবে না (SQL সার্ভার ছোঁড়ার Cannot truncate table because it is being referenced by a FOREIGN KEY constraint), এমনকি যদি তারা খালি রয়েছে, তাই FKs করা আবশ্যক বাদ পড়েছে এবং recreated অর্ডার ব্যবহার করতে আপনাকে অবশ্যই TRUNCATEযাহাই হউক না কেন।
আলেক্সি

5

যদি

      using(var db = new MyDbContext())
            {
               await db.Database.ExecuteSqlCommandAsync(@"TRUNCATE TABLE MyTable"););
            }

কারণসমূহ

'মাই টেবিল' সারণীটি ছিন্ন করতে পারে না কারণ এটি একটি বিদেশী মূল সীমাবদ্ধতার দ্বারা উল্লেখ করা হচ্ছে।

আমি এটি ব্যবহার:

      using(var db = new MyDbContext())
               {
                   await db.Database.ExecuteSqlCommandAsync(@"DELETE FROM MyTable WHERE ID != -1");
               }

1
আপনার যদি বিদেশী কী বাধা থাকে: (1) এসকিউএলকে "মাই টেবিল থেকে মুছে ফেলুন" এ সরলীকরণ করা যেতে পারে। (২) এটি আইডি কাউন্টারটিকে পুনরায় সেট করবে না যদি আপনার এটি স্ব-সংযোজন (সেটাকে কাটা) সেট করে থাকে।
আরজিএইচ

5
var data = (from n in db.users select n);
db.users.RemoveRange(data);
db.SaveChanges();

4

আপনি যদি আপনার সম্পূর্ণ ডাটাবেস সাফ করতে চান।

বিদেশী-কি বাধাগুলির কারণে এটি সারণীগুলি কেটে দেওয়া হয় তা ক্রমযুক্ত। এই ক্রমটি ব্রুটফোর্স করার একটি উপায়।

    public static void ClearDatabase<T>() where T : DbContext, new()
    {
        using (var context = new T())
        {
            var tableNames = context.Database.SqlQuery<string>("SELECT TABLE_NAME FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_TYPE = 'BASE TABLE' AND TABLE_NAME NOT LIKE '%Migration%'").ToList();
            foreach (var tableName in tableNames)
            {
                foreach (var t in tableNames)
                {
                    try
                    {

                        if (context.Database.ExecuteSqlCommand(string.Format("TRUNCATE TABLE [{0}]", tableName)) == 1)
                            break;

                    }
                    catch (Exception ex)
                    {

                    }
                }
            }

            context.SaveChanges();
        }
    }

ব্যবহার:

ClearDatabase<ApplicationDbContext>();

এই পরে আপনার DbContext পুনর্বহাল মনে রাখবেন।


2

নিম্নলিখিত এসকিউএল ডাটাবেসে কাজ করে (সত্তা ফ্রেমওয়ার্ক ব্যবহার করে)

দেখে মনে হচ্ছে যে সমস্ত ডিবি টেবিলগুলি সাফ করার দ্রুততম উপায়টি 'কনটেক্সট.ডাটাবেস.এক্সেকিউটসক্লককম্যান্ড ("কিছু এসকিউএল")' ব্যবহার করছে, যেমন উপরের কিছু মন্তব্যও হাইলাইট করা হয়েছে। এখানে আমি দেখাবো যে কীভাবে সারণিগুলির 'সূচক' গণনাটি পুনরায় সেট করতে হয়।

            context.Database.ExecuteSqlCommand("delete from TableA");
            context.Database.ExecuteSqlCommand("delete from sqlite_sequence where name='TableA'");//resets the autoindex

            context.Database.ExecuteSqlCommand("delete from TableB");
            context.Database.ExecuteSqlCommand("delete from sqlite_sequence where name='TableB'");//resets the autoindex 

            context.Database.ExecuteSqlCommand("delete from TableC");
            context.Database.ExecuteSqlCommand("delete from sqlite_sequence where name='TableC'");//resets the autoindex 

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

দ্রষ্টব্য: বর্ণ প্রসঙ্গ = নতুন আপনার কনটেক্সট ()


1

এটি EF 5 এ সঠিকভাবে কাজ করে:

YourEntityModel myEntities = new YourEntityModel();

var objCtx = ((IObjectContextAdapter)myEntities).ObjectContext;
objCtx.ExecuteStoreCommand("TRUNCATE TABLE [TableName]");

1

ইএফসিওরে (আমি যে সংস্করণটি ব্যবহার করছি এটি হ'ল ৩.১) আপনি সমস্ত সারি সরাতে নিম্নলিখিতটি ব্যবহার করতে পারেন -

context.Database.ExecuteSqlRaw("TRUNCATE TABLE [TableName]");

0

সমস্ত রেকর্ড মুছুন। "ছাঁটাই" এর মতো প্রাথমিক সূচি পুনরায় সেট করবেন না।

/// <summary>
/// SET - DELETE all record by table - no truncate - return deleted records
/// </summary>
public static int setListDelAllMYTABLE()
{
    // INIT
    int retObj = 0;
    using (MYDBEntities ctx = new MYDBEntities())
    {
        // GET - all record
        var tempAllRecord = ctx.MYTABLE.ToList();
        // RESET
        ctx.MYTABLE.RemoveRange(tempAllRecord);
        // SET - final save
        retObj += ctx.SaveChanges();
    }
    // RET
    return retObj;
}

আপনি মুছে ফেলতে সমস্ত রেকর্ড কেন টানবেন? চূড়ান্ত অদক্ষ
মেরে

কারণ অভিনয় আমার অগ্রাধিকার ছিল না। এটি মড্যুলারটির উপর ভিত্তি করে, সুতরাং আপনি যদি কোনও অবস্থার যোগ করতে চান বা ডেটা অপসারণের আগে এটি পরীক্ষা করতে চান তবে আপনি এটি করতে পারেন। EF6 হ'ল এসকিউএল I / O সম্পর্কে সবচেয়ে ধীরতম সরঞ্জাম, সুতরাং যদি পারফরম্যান্সটি যদি অগ্রাধিকার হয় তবে EF6 কেন ব্যবহার করা উচিত প্রশ্ন হওয়া উচিত ..
রবার্তো মুট্টি

0

আমার কোডে আমার ডেটাবেস অবজেক্টে সত্যিই ভাল অ্যাক্সেস ছিল না, তাই আপনি এটি ডিবিসেটে করতে পারেন যেখানে আপনাকে যে কোনও ধরণের স্কয়ার ব্যবহারেরও অনুমতি দেওয়া হয়। এটি এর মত সাজানোর মতো হবে:

var p = await _db.Persons.FromSql("truncate table Persons;select top 0 * from Persons").ToListAsync();

0

যদি এমভিসি হয় তবে আপনি এটি করতে পারেন:

public async Task<IActionResult> DeleteAll()
{
    var list = await _context.YourClass.ToListAsync();
    _context.YourClass.RemoveRange(list);
    await _context.SaveChangesAsync();
    return RedirectToAction(nameof(Index));
}

0

নিশ্চিত করুন যে আপনি যখন পিতামাতাকে মুছে দেওয়ার চেষ্টা করছেন তখন সমস্ত শিশু মুছে ফেলার জন্য ক্যাসকেড করবে। বা শিশুদের নিকটে বিদেশী কী রয়েছে।


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