নির্দিষ্ট ধরণের সদস্য 'তারিখ' লিনকু থেকে সত্তাগুলিতে সমর্থিত নয়। শুধুমাত্র আরম্ভকারী, সত্তা সদস্য এবং সত্তা নেভিগেশন বৈশিষ্ট্য


138

সত্তা ফ্রেমওয়ার্কে এই কোডটি ব্যবহার করে আমি নিম্নলিখিত ত্রুটিটি পেয়েছি। একটি নির্দিষ্ট তারিখের জন্য আমার সমস্ত সারি পাওয়া দরকার, DateTimeStartএই ফর্ম্যাটে ডেটা টাইপ টাইপ2013-01-30 12:00:00.000

কোড:

 var eventsCustom = eventCustomRepository.FindAllEventsCustomByUniqueStudentReference(userDevice.UniqueStudentReference)
                    .Where(x =>  x.DateTimeStart.Date == currentDateTime.Date);

ত্রুটি:

বেস {সিস্টেম.সিস্টেম এক্সেপশন} = {"নির্দিষ্ট ধরণের সদস্য 'তারিখ' লিনকিউতে সত্তা থেকে সমর্থিত নয় Only কেবল আরম্ভকারী, সত্তা সদস্য এবং সত্তা নেভিগেশন বৈশিষ্ট্যগুলি সমর্থিত।"}

কোন ধারনা কিভাবে এটা ঠিক?


আমি x.DateTimeStart.Date EF কোর 2.1.1 এ ব্যবহার করতে সক্ষম হয়েছি
কার্স্টেন লোভ

উত্তর:


271

DateTime.Dateএসকিউএল রূপান্তর করা যাবে না। তারিখের অংশটি পেতে অ্যান্টিটি ফাংশনস T ট্রান্সকেটটাইম পদ্ধতিটি ব্যবহার করুন ।

var eventsCustom = eventCustomRepository
.FindAllEventsCustomByUniqueStudentReference(userDevice.UniqueStudentReference)
.Where(x => EntityFunctions.TruncateTime(x.DateTimeStart) == currentDate.Date);

আপডেট: যেমন @ শ্যাঙ্কবন্ড মন্তব্যগুলিতে উল্লেখ করেছে, সত্তা ফ্রেমওয়ার্ক in EntityFunctionsএ অপ্রচলিত এবং আপনার DbFunctionsক্লাস ব্যবহার করা উচিত , যা সত্তা ফ্রেমওয়ার্কের সাথে প্রেরণ করা হয়।


1
আমাকে আপনার সংস্করণটি সামান্যভাবে সংশোধন করতে হবে here যেখানে (x => সত্তা ফাংশন। ট্রান্সকেটটাইম (x.DateTimeStart) == কারেন্টডেট.ডেট); আমাকে তোমার থাগস জানাতে দাও
গিব্বোক

1
আমি আশা করি আপনার আপত্তি নেই আমি আপনার উত্তরটি সম্পাদনা করেছি। তারিখের সাথে আপনি যদি রাজি হন তবে কেবল রেফারেন্সের জন্য :-) আপনার সমর্থনের জন্য ধন্যবাদ, আমি সত্যিই এটির প্রশংসা করি
গিব্বোক

1
@ গিব্বোক নিশ্চিত, কোনও সমস্যা নেই :) এটি কেবল দীর্ঘ স্ট্রিং ফর্ম্যাট করার উদ্দেশ্যে ছিল।
সের্গেই বেরেজোভস্কি 11

68
সত্ত্বা ফাংশনগুলি অপ্রচলিত, পরিবর্তে DbFuntions.TruncateTime পদ্ধতি ব্যবহার করুন
শঙ্কবন্ড

1
নির্দিষ্ট ধরণের সদস্য 'তারিখ' লিনকু থেকে সত্তাগুলিতে সমর্থিত নয়। কেবলমাত্র আরম্ভকারী, সত্তা সদস্য এবং সত্তা নেভিগেশন বৈশিষ্ট্যগুলি সমর্থিত।
এসআর

83

আপনার এখন ব্যবহার করা উচিত DbFunctions.TruncateTime

var anyCalls = _db.CallLogs.Where(r => DbFunctions.TruncateTime(r.DateTime) == callDateTime.Date).ToList();


নির্দিষ্ট ধরণের সদস্য 'তারিখ' লিনকু থেকে সত্তাগুলিতে সমর্থিত নয়। কেবলমাত্র আরম্ভকারী, সত্তা সদস্য এবং সত্তা নেভিগেশন বৈশিষ্ট্যগুলি সমর্থিত।
এসআর

17

আমি একটি সমাধান যুক্ত করতে চাই, যা সত্তা কাঠামোর এই সমস্যাটি সমাধান করতে আমাকে সহায়তা করেছে:

var eventsCustom = eventCustomRepository.FindAllEventsCustomByUniqueStudentReference(userDevice.UniqueStudentReference)
                .Where(x =>  x.DateTimeStart.Year == currentDateTime.Year &&
                             x.DateTimeStart.Month== currentDateTime.Month &&
                             x.DateTimeStart.Day == currentDateTime.Day
    );

আমি আশা করি এটি সাহায্য করে


15

EntityFunctionsঅপ্রচলিত। DbFunctionsপরিবর্তে ব্যবহার বিবেচনা করুন ।

var eventsCustom = eventCustomRepository.FindAllEventsCustomByUniqueStudentReference(userDevice.UniqueStudentReference)
   .Where(x => DbFunctions.TruncateTime(x.DateTimeStart) == currentDate.Date);

8

সর্বদা এক্স.ডেটটাইমস্টার্ট এবং বর্তমানের তারিখ উভয়ের জন্য সত্ত্বা ফানকশনস ট্রানকাটটাইম () ব্যবহার করুন। যেমন :

var eventsCustom = eventCustomRepository.FindAllEventsCustomByUniqueStudentReference(userDevice.UniqueStudentReference).Where(x => EntityFunctions.TruncateTime(x.DateTimeStart) == EntityFunctions.TruncateTime(currentDate));

5

কেবল সাধারণ বৈশিষ্ট্য ব্যবহার করুন।

var tomorrow = currentDateTime.Date + 1;  
var eventsCustom = eventCustomRepository.FindAllEventsCustomByUniqueStudentReference(userDevice.UniqueStudentReference)
                            .Where(x =>  x.DateTimeStart >= currentDateTime.Date 
                                   and x.DateTimeStart < tomorrow);

যদি ভবিষ্যতে তারিখগুলি আপনার অ্যাপ্লিকেশনটিতে সম্ভব না হয় তবে > = x.DateTimeStart> = বর্তমানডেটটাইম.ডেট যথেষ্ট।

আপনার যদি আরও জটিল তারিখের তুলনা হয় তবে ক্যানোনিকাল ফাংশনগুলি পরীক্ষা করুন এবং যদি আপনার EF6 + DB ফাংশন রয়েছে

আরও সাধারণভাবে - ইএফ-র সমর্থিত লিনক পদ্ধতিগুলি ইস্যুগুলির সন্ধানকারী লোকদের জন্য লিঙ্কের বিবৃতিগুলির সাথে অনুরূপ সমস্যাগুলি ব্যাখ্যা করতে পারে যা মেমরি বেস তালিকাতে কাজ করে তবে ইএফ-তে নয়।




0

আর একটি সমাধান হতে পারে:

var eventsCustom = eventCustomRepository.FindAllEventsCustomByUniqueStudentReference(userDevice.UniqueStudentReference).AsEnumerable()
   .Where(x => x.DateTimeStart.Date == currentDate.Date).AsQueryable();
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.