সত্তা ফ্রেমওয়ার্ক 3 টেবিল যোগ দিন


133

আমি তিনটি টেবিলের সাথে যোগ দেওয়ার চেষ্টা করছি তবে আমি পদ্ধতিটি বুঝতে পারি না ...

আমি 2 টেবিল যোগদান সম্পূর্ণ

        var entryPoint = dbContext.tbl_EntryPoint
            .Join(dbContext.tbl_Entry,
                c => c.EID,
                cm => cm.EID,
                (c, cm) => new
                {
                    UID = cm.OwnerUID,
                    TID = cm.TID,
                    EID = c.EID,
                }).
            Where(a => a.UID == user.UID).Take(10);

টেবিল

আমি টিআইডি পিকে সাথে টিবিএল_সিটেল টেবিলটি অন্তর্ভুক্ত করতে এবং শিরোনাম ক্ষেত্র পেতে চাই ।

অনেক ধন্যবাদ


এই সম্পর্কিত নিবন্ধটি দেখুন। এটা তোলে পদ্ধতি স্বরলিপি ব্যবহার না কিন্তু, আপনি সারকথা ... পেতে সক্ষম হওয়া উচিত stackoverflow.com/questions/11204367/...
xspydr

দয়া করে প্রসারিত নেভিগেশন বৈশিষ্ট্য সহ একটি ছবি দেখান। নেভিগেশন বৈশিষ্ট্যগুলি রেডিমেড যোগদান করে।
গার্ট আর্নল্ড

উত্তর:


202

আমি মনে করি সিনট্যাক্স-ভিত্তিক ক্যোয়ারী ব্যবহার করা আরও সহজ হবে:

var entryPoint = (from ep in dbContext.tbl_EntryPoint
                 join e in dbContext.tbl_Entry on ep.EID equals e.EID
                 join t in dbContext.tbl_Title on e.TID equals t.TID
                 where e.OwnerID == user.UID
                 select new {
                     UID = e.OwnerID,
                     TID = e.TID,
                     Title = t.Title,
                     EID = e.EID
                 }).Take(10);

সঠিক দশটি আইটেমের রিটার্ন orderbyনিশ্চিত করার জন্য আপনার সম্ভবত ক্লজ যুক্ত করা উচিত Top(10)


3
পদ্ধতির জন্য আপনাকে অনেক ধন্যবাদ; পরিষ্কার কাজ করে তবে আমি যেমন জিজ্ঞাসা করেছি উত্তরটি দেখতে চাই, আবারও অনেক ধন্যবাদ।
এরিন দেদেওলু

@ মার্সিন জুরাসেকেক: কাজ করার জন্য যদি আমার ভিউমোডেল দরকার হয় তবে আমি কি টেবিলগুলিতে যোগদান করা দরকার?
ভিনি

এটি async ছাড়াও কাজ করে না। আমার সঠিক দৃশ্যপট রয়েছে তবে ক্যোয়ারিতে একটি ব্যতিক্রম ছুঁড়ে ফেলা হচ্ছে [the_list_of_all_return_variables] 'সিরিয়াল করা যায় না। @marcinJuraszek - আপনি কটাক্ষপাত আছে গেল stackoverflow.com/questions/42453123/...
sandiejat

1
পারফেক্ট! আপনি আমাকে এত সময় বাঁচিয়েছেন :)
মোহাম্মদহসাইন আর

81

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

var fullEntries = dbContext.tbl_EntryPoint
    .Join(
        dbContext.tbl_Entry,
        entryPoint => entryPoint.EID,
        entry => entry.EID,
        (entryPoint, entry) => new { entryPoint, entry }
    )
    .Join(
        dbContext.tbl_Title,
        combinedEntry => combinedEntry.entry.TID,
        title => title.TID,
        (combinedEntry, title) => new 
        {
            UID = combinedEntry.entry.OwnerUID,
            TID = combinedEntry.entry.TID,
            EID = combinedEntry.entryPoint.EID,
            Title = title.Title
        }
    )
    .Where(fullEntry => fullEntry.UID == user.UID)
    .Take(10);

17
এটা ঘৃণ্য। যদি আমি কখনও প্রোডাকশন কোডে এই জাতীয় কোনও কোয়েরি পেয়েছি তবে আমি তাৎক্ষণিকভাবে এটি রিফেক্টর করব। যদিও জিজ্ঞাসা করা হয়েছে প্রশ্নের উত্তর দেওয়ার জন্য +1!
ড্যান বেচার্ড

8
@ ড্যান কৌতূহলের বাইরে কেবল সি, সেন্টিমিটার এবং সিসিএম সহ সমস্ত নামকরণের সম্মেলনে বা কেবল লিংক এবং ল্যাম্বদা ব্যবহার করে যোগ দেওয়ার জন্য প্রয়োজনীয় সিনট্যাক্সটি কি ঘৃণাজনক নয়? যদি প্রাক্তন হয় এবং আপনি পোস্টটি সম্পাদন করতে চান তবে এটি আরও ভাল লেআউটে থাকতে হবে all আমি এখনও সত্তা কাঠামোর জন্য নতুন এবং এখনও সেরা অভ্যাসে ভিজছি তাই আপনার যদি এই উত্তরটি ভবিষ্যতের ব্যবহারকারীদের জন্য আরও স্পষ্ট করে দেওয়ার পরামর্শ থাকে তবে আমি সহায়তাটির প্রশংসা করব।
পাইেন্ট

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

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

5
আমি কেবল কমা শুরু করার লাইনের বিরুদ্ধে যুক্তিগুলি পাই না। আমি দৃ firm় বিশ্বাসী, যেহেতু এটি পৃথক ধারা / যুক্তি মন্তব্য করা সহজ করে তোলে। এবং এটি সুন্দর দেখাচ্ছে :-)
অস্পেক্স
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.