2009-02-23 13 views
8

के साथ इकाई मॉडल में फ़ंक्शन आयात मेरे पास मेरे एंटिटी डेटा मॉडल में संग्रहीत प्रक्रिया है और इसे फ़ंक्शन आयात में जोड़ा गया है।गैर-इकाई रिटर्न प्रकार

समस्या है ... विजुअल स्टूडियो मॉडल कोड के पीछे फ़ंक्शन कोड उत्पन्न करता है यदि पीछे और केवल अगर मैं एक इकाई प्रकार होने के लिए रिटर्न निर्दिष्ट करता हूं। स्केलर और शून्य वापसी प्रकार काम नहीं करते हैं। जब मैं उन्हें चुनता हूं तो विजुअल स्टूडियो फ़ंक्शन कोड उत्पन्न नहीं करता है।

क्या मुझे कुछ याद आ रहा है, या यह एक बग है?
कोई काम-आसपास?


(सर्विस पैक 1) का उपयोग करना विजुअल स्टूडियो 2008 v9.0.30729.1 सपा

उत्तर

8

यह इतना नहीं एक बग के रूप में यह एक सुविधा की कमी है। एंटिटी फ्रेमवर्क अभी स्केलर वैल्यू लौटने वाली संग्रहीत प्रक्रियाओं का समर्थन नहीं करता है। मेरा मानना ​​है कि यह .NET 4.0 में बदलना है। इस बीच, आप CreateDbCommand के माध्यम से उपलब्ध स्टोर कनेक्शन का उपयोग करके ऐसी संग्रहीत प्रक्रिया निष्पादित कर सकते हैं।

+0

धन्यवाद। यूआई भ्रामक है क्योंकि यह स्केलर और शून्य वापसी प्रकारों का चयन करने की अनुमति देता है। –

+0

मेरे पास CreateDbCommand का उपयोग करने पर एक फॉलोअप प्रश्न है। देखें: http://stackoverflow.com/questions/587173/execute-a-stored-procedure-in-entity-framework-from-within-an-ado-net-dataservice –

4

चूंकि अब काम करने वाली एकमात्र चीज रिटर्न प्रकार को किसी इकाई में मैप करना है, एक वर्कअराउंड एक दृश्य बनाना है जो रिटर्न डेटा से मेल खाता है और दृश्य के लिए एक इकाई बनाता है। यह केवल तभी काम करेगा जब एसपी परिणाम सेट वापस करने के लिए एक चयन कर रहा है, वापसी मूल्य नहीं। मैं यह इतना की तरह, एक नमूना अनुप्रयोग के साथ काम करने के लिए मिल गया: सपा:

ALTER PROCEDURE [dbo].[DoSomething] 
    @param1 varchar(50), 
    @param2 varchar(50) 
AS 
BEGIN 
    DECLARE @ID INT 
    SET NOCOUNT ON; 
    INSERT tmp_header (fname, lname) VALUES (@param1, @param2) 
    SET @ID = SCOPE_IDENTITY() 
    SELECT @ID AS 'id' 
END 

देखें:

CREATE VIEW [dbo].[View_1] 
AS 
SELECT 0 as id 

समारोह आयात View_1 को वापसी प्रकार की स्थापना बनाएँ और मॉडल बनाने।

कोड में

:

class Program 
    { 
     static void Main(string[] args) 
     { 
     using (PS_RADSTESTEntities ctx = new PS_RADSTESTEntities()) 
     { 
      EntityConnection ec = ctx.Connection as EntityConnection; 
      ec.Open(); 
      DbTransaction txn = ec.BeginTransaction(); 
      ObjectResult<View_1> result = ctx.DoSomething("Toby", "Kraft"); 
      View_1 row = result.Single(); 
      int id = row.id; 
// do some other interesting things ... 
      ctx.SaveChanges(); 
      txn.Commit(); 
     } 
     } 
    } 

स्तंभ नाम देख सकते हैं और सपा के बीच बिल्कुल वैसा ही स्थापित करने के लिए सुनिश्चित करें। टोबी

+0

+1 वर्कअराउंड देखने के लिए +1 – walterhuang

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