2010-10-19 12 views
5

मैंने एंटिटी फ्रेमवर्क 4 का उपयोग करके एक इकाई मॉडल बनाया है, जिसे मैंने डब्लूसीएफ डेटा सेवा के माध्यम से उजागर किया है। मेरी इकाइयों में से एक को गुणों को परिभाषित करने की आवश्यकता है जो डेटाबेस के लिए जारी नहीं हैं, लेकिन इकाई मॉडल डिजाइनर आपको ऐसा करने की अनुमति नहीं देता है।डब्ल्यूसीएफ डेटा सेवा का उपयोग करके मैं निरंतर संपत्तियों का खुलासा कैसे करूं?

इस दौर को पाने के लिए मैंने अपनी सभी वस्तुओं को पॉको ऑब्जेक्ट्स के रूप में परिभाषित किया है, जो आपको अपनी ऑब्जेक्ट्स में गैर-स्थिर गुण जोड़ने की अनुमति देता है, लेकिन आपका मॉडल नहीं।

मेरे पास यह मुद्दा है, क्योंकि ये गैर-स्थिर गुण केवल वस्तुओं में मौजूद हैं, मॉडल नहीं, वे डब्ल्यूसीएफ डेटा सेवा के माध्यम से प्रकट नहीं होते हैं।

क्या किसी ऐसे इकाई मॉडल में गुणों को परिभाषित करने का कोई तरीका है जो डेटाबेस पर नहीं रहे हैं? किसी भी उत्तर

रयान

उत्तर

0

खैर कक्षाओं मॉडल के लिए के लिए पहले से

धन्यवाद आंशिक रहे हैं। आप कक्षाओं के अन्य हिस्सों में अपनी निरंतर संपत्तियां लिख सकते हैं। अगर यह काम करता है तो कृपया लिखें क्योंकि मैं डब्ल्यूसीएफ डाटा सर्विसेज का उपयोग नहीं कर रहा हूं, लेकिन हर बार जब मुझे व्यावसायिक वस्तुओं में संपत्ति की आवश्यकता होती है जो डीबी में फ़ील्ड में मैप नहीं किया जाता है, तो मैं इसे इस तरह से बना देता हूं।

+0

दुर्भाग्य से, यह वही है जो मैंने करने की कोशिश की है। गुण संदर्भ.cs में प्रकट नहीं होते हैं, हालांकि, जब आप डब्ल्यूसीएफ डेटा सेवा के लिए सेवा संदर्भ बनाते हैं। –

0

मुझे लगता है कि अतिरिक्त संपत्तियों को परिभाषित करने के लिए आंशिक कक्षा का उपयोग करने के साथ ikirachen सही रास्ते पर है। डब्ल्यूसीएफ के लिए उन्हें बेनकाब करने के लिए, आपको गुणों को डेटामेम्बर विशेषता के साथ चिह्नित करना होगा। मैं इस परीक्षण करने के लिए एक छोटे से WCF सेवा बनाया:

[ServiceContract] 
public interface IService1 
{ 
    [OperationContract] 
    string DoStuff(User user); 
} 

public class Service1 : IService1 
{ 
    public string DoStuff(User user) 
    { 
     string result = string.Empty; 
     foreach (Guid leadId in user.AssociatedLeadIds) 
     { 
      // This is going to console on client, 
      // just making sure we can read the data sent to us 
      result += leadId.ToString() + "\n"; 
     } 

     return result; 
    } 
} 

// partial entity model class 
public partial class User 
{ 
    // This is not persisted to our DB with the user model 
    [DataMember] 
    public ICollection<Guid> AssociatedLeadIds { get; set; } 
} 

और यहाँ ग्राहक कोड है, AssociatedLeadIds WCF के माध्यम से अवगत कराया दिखा:

class Program 
{ 
    static void Main(string[] args) 
    { 
     User u = new User 
     { 
      // Here we set our non-persisted property data 
      AssociatedLeadIds = new Guid[] 
      { 
       Guid.NewGuid(), 
       Guid.NewGuid(), 
       Guid.NewGuid() 
      }, 
      // The rest are persisted properties 
      ApplicationId = Guid.NewGuid(), 
      UserName = "TestUser", 
      LoweredUserName = "testuser", 
      LastActivityDate = DateTime.Now, 
      IsAnonymous = false 
     }; 

     using (Service1Client svc = new Service1Client()) 
     { 
      // Here we call the service operation 
      // and print the response to the console 
      Console.WriteLine(svc.DoStuff(u)); 
     } 

     Console.ReadKey(); 
    } 
} 

उम्मीद है कि इस मदद करता है!

+0

कोड को थोड़ा और अधिक फ़्लश किया गया। अगर आप अभी भी डब्ल्यूसीएफ के माध्यम से संपत्तियों का पर्दाफाश करने में असमर्थ हैं तो मुझे बताएं। – jlaneaz

+0

आपके इनपुट jlaneaz के लिए धन्यवाद, दुर्भाग्यवश यह अभी भी डब्ल्यूसीएफ डेटा सेवा का उपयोग कर मेरे लिए काम नहीं करता है। मुझे लगता है कि मुझे पता है कि समस्या क्या है। डब्ल्यूसीएफ डेटा सेवा के लिए सेवा संदर्भ कोड बेस की बजाय ईडीएमएक्स फ़ाइल से बनाया गया प्रतीत होता है, इसलिए केवल उन गुणों को जो ईडीएमएक्स फ़ाइल में मौजूद हैं, सेवा संदर्भ में क्रमबद्ध हैं। –

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