2015-05-14 12 views
8

में कैननिकल फ़ंक्शंस का उपयोग कैसे करें I MySQL डेटाबेस के साथ EntityFramework में डेटटाइम को टाइम्सपैन जोड़ना चाहते हैं।एंटिटी फ्रेमवर्क और माइस्क्ल

मैं DbFunctions.AddMinutes(someminutes) और EntityFunctions.AddMinutes(someminutes) उपयोग करने की कोशिश की है, लेकिन जब मैं निष्पादित मैं

फंक्शन projectName.AddMinutes तरह अपवाद कुछ पाने मौजूद नहीं है

मैं googled है लेकिन विहित समारोह निष्पादित करने के लिए कैसे नहीं मिल सकता है । हालांकि वहाँ समारोह की एक सूची है, लेकिन फिर मुझे पता नहीं कि किस वर्ग वे हैं https://msdn.microsoft.com/en-us/library/bb738563.aspx

मैं

  1. MySql.Data.Entities 6.8.3.0
  2. EntityFramework 6.0.0
  3. उपयोग कर रहा हूँ
  4. MySql.Data 6.8.4
  5. MySql.Web 6.8.4
  6. MySql (डाटाबेस) 5.6.17

मेरे LINQ क्वेरी

IQueryable<OrderViewModel> orders = _dbContext.Orders 
         .OrderByDescending(x => x.ID) 
         .Select(x => new OrderViewModel 
             { ID = x.ID, 
              AddedOn = DbFunctions.AddMinutes(x.AddedOn, diffMinutes).Value, 
              Customer = (x.IsGuestCheckOut == true ? x.CustomerEmail : x.Customer.FirstName + " " + x.Customer.LastName), 
              Phone = x.Phone, 
              TotalAmount = x.TotalAmount, 
              OrderStatus = x.OrderStatus }); 
सड़क के नीचे

नीचे के रूप में है, जहां हालत और पृष्ठांकन लागू किया जाता है

ताकि आप दिनांक समय वर्ग यानी के कहने के लिए उपयोग कर सकते हैं
+0

आप usings को System.Data.Entity नाम स्थान जोड़ा है? –

+0

@AdilMammadov हाँ यह पहले से ही है। –

उत्तर

1

असल में मैं त्रुटि गलत समझा यह

लेकिन

फंक्शन databaseName.AddMinutes मौजूद नहीं है मौजूद नहीं है नहीं

फंक्शन projectName.AddMinutes है

मुझे नहीं पता कि समस्या क्या है। क्या मेरे पास कोई गैर-संगत ड्राइवर/कनेक्टर है, मुझे नहीं पता।

इस समस्या को हल करने के लिए मैंने अभी नाम Addininutes के साथ फ़ंक्शन बनाया है, यह आंतरिक रूप से DATE_ADD() फ़ंक्शन को कॉल करता है। समारोह की परिभाषा नीचे

CREATE FUNCTION `AddMinutes`(actualDateTime datetime, minutesToAdd int) 
RETURNS datetime 
BEGIN 
    RETURN DATE_ADD(actualDateTime, INTERVAL minutesToAdd MINUTE); 
END 

के रूप में मैं समझता हूँ कि इस उचित समाधान नहीं है, लेकिन हैक

0

AddMinutes विधि DATETIME, वर्ग का हिस्सा है कुछ

DateTime dateNow = new DateTime.Now; 
dateNow.AddMinutes(someminutes); 

DbFunctions.AddMinutes (अभिव्यक्ति, संख्या) इस समारोह केवल संस्थाओं क्वेरी के लिए एक LINQ के भीतर प्रदर्शित कर सकते हैं (https://msdn.microsoft.com/en-us/library/dn220081(v=vs.113).aspx):

0,123,
Context.Train.Where(x => EntityFunctions.AddMinutes(x.Start, 10) > DateTime.Now) 
+0

बेहतर अंडरसंडिंग –

+0

के लिए अद्यतन प्रश्न क्या आप सुनिश्चित हैं कि mysql के लिए आपका चालक कैननिकल फ़ंक्शंस का समर्थन करता है? – PatBusz

+0

मैं कैसे जांच सकता हूं कि ड्राइवर कैननिकल कार्यों का समर्थन करता है या नहीं? –

संबंधित मुद्दे