2012-04-14 9 views
6

मैं एफ # से SQL सर्वर कॉम्पैक्ट संस्करण डेटाबेस से कनेक्ट करने का प्रयास कर रहा हूं, और एक प्रकार प्रदाता का उपयोग करने का प्रयास कर रहा हूं। यह विजुअल स्टूडियो 11 बीटा में है, इसलिए मुझे एहसास हुआ कि इसके कारण कोई समस्या हो सकती है, लेकिन मुझे लगता है कि यह अधिक संभावना है कि मुझे अभी तक पता नहीं है।एफ # में एक प्रकार प्रदाता के साथ SQL सर्वर कॉम्पैक्ट संस्करण 4.0 से कैसे कनेक्ट करें?

हालांकि, मैंने देखा है कि Microsoft.FSharp.Data.TypeProviders में कोई सीई-विशिष्ट प्रकार प्रदाता नहीं है और मुझे यकीन नहीं है कि नियमित SqlDataConnection चाल करेगा, इसलिए यह समस्या हो सकती है।

हालांकि, जब मैं कनेक्शन बनाने का प्रयास करता हूं, तो आईडीई यह मानता है कि मैं कम से कम एक सीई डेटाबेस हिट करने की कोशिश कर रहा हूं।

तो, मैं निम्नलिखित कोड है:

type SqlConnection = 
    Microsoft.FSharp.Data.TypeProviders 
    .SqlDataConnection<ConnectionString = @"Data Source=C:\\Path\\Database.sdf"> 
let db = SqlConnection.GetDataContext() 

तो यह बहुत मानक, कम या ज्यादा सीधे बाहर का है प्रकार प्रदाता आइटम मेनू के साथ SQL करने के लिए नए LINQ जोड़ें।

मैं कनेक्शन स्ट्रिंग पर प्राप्त टूलटिप "प्रदाता" सिस्टम है .डेटाक्लरसेवर 3.5 'स्थापित नहीं है। " ऐसा लगता है कि ऐसा लगता है कि एसक्यूएल सर्वर सीई स्थापित नहीं होने में यह समस्या है, लेकिन मुझे पुस्तकालय मिल गया है, मैं एक नियमित SqlCEConnection का उपयोग कर डेटाबेस से कनेक्ट करने और SqlCeCommands चलाने और इस तरह के डेटाबेस से कनेक्ट करने में सक्षम हूं। और चूंकि यह 4.0 है और 3.5 नहीं, मुझे यकीन नहीं है कि यह गलत प्रदाता की तलाश में है या नहीं। मैंने वीएस 11 बीटा में डेटाबेस बनाया है, इसलिए मैं यह समझ रहा था कि सभी संस्करणों का मिलान होना चाहिए और ऐसा।

तो संक्षेप में, मुझे आश्चर्य है कि मैं कुछ गलत कर रहा हूं, या यदि वीएस 11 बीटा प्रकार प्रदाता पुस्तकालय अभी तक सीई 4.0 का समर्थन नहीं करते हैं, या अगर ऐसा कुछ करने के लिए मुझे कुछ करने की ज़रूरत है ।

धन्यवाद!

उत्तर

5

यह "काम करता है मेरी मशीन पर" (का उपयोग कर वी.एस. 11 बीटा, इकाई की रूपरेखा, पूर्वाभ्यास यहाँ, http://msdn.microsoft.com/en-us/library/hh361038(v=vs.110).aspx के आधार पर:

open System.Data.Linq 
open System.Data.EntityClient 
open Microsoft.FSharp.Data.TypeProviders 

let connectionString = "metadata=res://*/;provider=System.Data.SqlServerCe.4.0;provider connection string='data source=C:\\Data\\SQLCE\\Test\\nw40.sdf';" 

type internal edmx = EdmxFile<"NWModel.edmx", ResolutionFolder = @"C:\Users\erik.COMMENTOR\Documents\Visual Studio 11\Projects\TestSqlCeFSharp"> 

let internal context = new edmx.nw40Model.nw40Entities(connectionString) 

query { for supplier in context.Suppliers do 
     select supplier } 
|> Seq.iter (fun supplier -> printfn "%s" supplier.Company_Name) 

जोड़ा संदर्भ: FSharp.Data.TypeProviders, System.Data.Entity, System.Data.Linq

+0

आज तक परीक्षण करने का मौका नहीं मिला। यह एक बड़ी मदद थी, इसलिए धन्यवाद! मैंने यह भी पाया कि कम से कम सरल उदाहरण के लिए, System.Data.EntityClient को शामिल करना आवश्यक नहीं था। एक और कॉम्पैक्ट क्वेरी सिंटैक्स सिर्फ संदर्भ करने के लिए भी था। सप्लायर |> Seq.iter ... आदि – McMuttons

2
Supported info of 'System.Data.SqlServerCe.4.0' in Microsoft.FSharp.Data.TypeProviders 
1.SqlDataConnection is not 
2.DbmlFile is partial 
    type dbml = DbmlFile<_> 
    use cn = new SqlCeConnection(...) 
    use db = new dbml.DbContext(cn) 
3.EdmxFile is full 
4.SqlEntityConnection is full 
+0

तो मुझे लगता है कि इसका मतलब है कि कार्यक्षमता का एक गुच्छा है, लेकिन डेटा कनेक्शन स्थापित करना अभी तक नहीं है? मैं प्रदाताओं को टाइप करने के लिए बिल्कुल नया हूं, और काफी LINQ से SQL के लिए नया (प्रयोग सामान्य रूप से LINQ से जुड़ा हुआ)। – McMuttons

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