2011-03-05 17 views
27

मैं मॉडल प्रथम दृष्टिकोण का उपयोग करके एंटिटी फ्रेमवर्क 4 और एसक्यूएल कॉम्पैक्ट 4 के साथ एक ऐप विकसित कर रहा हूं। मैंने अपना ईडीएम बनाया है, और अब मैं मॉडल के लिए डेटा स्टोर के रूप में कार्य करने के लिए एक SQL कॉम्पैक्ट 4.0 डेटाबेस जेनरेट करना चाहता हूं। मैं ऊपर लाने के डाटाबेस जादूगर उत्पन्न और जनरेट की गई फ़ाइल के लिए एक कनेक्शन बनाने के लिए नया कनेक्शन बटन क्लिक करें। चुनें डेटा स्रोत संवाद प्रकट होता है, लेकिन SQL कॉम्पैक्ट 4.0 उपलब्ध डेटा स्रोतों की सूची में सूचीबद्ध नहीं है:इकाई फ्रेमवर्क 4 और एसक्यूएल कॉम्पैक्ट 4: डेटाबेस कैसे उत्पन्न करें?

enter image description here

मैं VS 2010 SP1 (बीटा) चल रहा हूँ और मैं VS 2010 उपकरण स्थापित किया है एसक्यूएल कॉम्पैक्ट 4.0 के लिए। मैं सर्वर एक्सप्लोरर से एक एसक्यूएल कॉम्पैक्ट 4.0 डेटा कनेक्शन बना सकता हूं। यह केवल डेटाबेस डेटाबेस विज़ार्ड जेनरेट करता है कि 4.0 विकल्प प्रकट नहीं होता है। बीटीडब्ल्यू, मेरी एसक्यूएल कॉम्पैक्ट 4.0 स्थापना में System.Data.SqlServerCe.Entity.dll शामिल है। तो मुझे एसक्यूएल कॉम्पैक्ट घटक चाहिए जो मुझे चाहिए।

मैं गलत तरीके से कुछ कर रहा हूँ, या यह एक बग है? क्या किसी के पास कोई फिक्स या वर्कअराउंड है? आपकी सहायता के लिए धन्यवाद.

+0

डेविड, क्या आपने सीई के बजाय SQLite का उपयोग करने पर देखा है? मुझे एसक्यूएलआईटी के साथ काम करना आसान है और ईएफ 4 का पूरी तरह से समर्थन करता है। –

उत्तर

34

समाधान के लिए, मैं उपयोग कर रहा हूँ डाटाबेस जादूगर उत्पन्न उत्पन्न करने के लिए एक एक एसक्यूएल कॉम्पैक्ट 3.5 स्क्रिप्ट है, जो मैं एक खाली एसक्यूएल कॉम्पैक्ट 4.0 डेटाबेस VS 2010 समाधान Explorer में बनाया के खिलाफ चल रहा हूँ।

चरण 1:: भागो डाटाबेस जादूगर उत्पन्न यहाँ कि कार्य को पूरा करने के लिए कदम है।यह अपने पहले पृष्ठ पर एक फ़ाइल के निर्माण के लिए संकेत देता है, इसलिए यह एक एसक्यूएल कॉम्पैक्ट 3.5 फ़ाइल बनाने की है। यह फ़ाइल एक डमी है, इसलिए इससे कोई फ़र्क नहीं पड़ता कि आप इसका नाम क्या रखते हैं।

चरण 2: DDL स्क्रिप्ट नए डेटाबेस कॉन्फिगर करेगा बनाने के लिए विज़ार्ड को पूरा करें।

चरण 3: उपयोग VS 2010 के सर्वर एक्सप्लोरर वास्तविक एसक्यूएल कॉम्पैक्ट 4.0 फ़ाइल है कि आप अपनी परियोजना में उपयोग करेगा बनाने के लिए: चरण 1.

चरण 4 में बनाया डमी फ़ाइल को हटा दें।

चरण 5:डाटाबेस जादूगर स्थानों edmx फ़ाइल में एसक्यूएल कॉम्पैक्ट "3.5" के लिए दो संदर्भ उत्पन्न; इन संदर्भों को "4.0" में बदलना होगा। (राइट क्लिक करें और 'ओपन के साथ' का चयन करें एक्सएमएल संपादक को पाने के लिए) VS 2010 के XML संपादक में edmx फ़ाइल खोलें। लाइन 7 में "3.5" संदर्भ होना चाहिए। इन्हें "4.0" में बदलें और फ़ाइल को सहेजें।

चरण 6: वीएस 2010 में जेनरेट की गई EDMX.SQLCE स्क्रिप्ट फ़ाइल खोलें। वीएस संकेत देगा (कार्य फलक की कपास में एक बैनर के माध्यम से) कि स्क्रिप्ट डिस्कनेक्ट हो गई है। बैनर के ऊपर सफेद स्थान पर राइट क्लिक करें और कनेक्शन> कनेक्ट संदर्भ प्रकट होने वाले मेनू में चयन करें। यही कारण है कि लाता है एक कनेक्शन संवाद - इसका इस्तेमाल एसक्यूएल कॉम्पैक्ट 4.0 डेटाबेस है कि आप चरण में बनाए गए करने के लिए स्क्रिप्ट कनेक्ट करने के लिए 4.

चरण 7: फिर स्क्रिप्ट सफेद-अंतरिक्ष में राइट क्लिक करें और निष्पादित चयन संदर्भ मेनू से एसक्यूएल। स्क्रिप्ट निष्पादित होगी और आपको स्क्रिप्ट के नीचे एक फलक में सामान्य परिणाम संदेश मिलेगा। सफल निष्पादन मानते हुए, डेटाबेस को एंटीटी डेटा मॉडल से मेल खाने के लिए कॉन्फ़िगर किया गया है।

चरण 8: हमें यह सुनिश्चित करने की भी आवश्यकता है कि App.config/web.config डमी फ़ाइल को इंगित नहीं कर रहा है। यदि यह ऊपर चरण 4 में बनाई गई वास्तविक सीई 4.0 फ़ाइल में बदल जाता है। जब हम मॉडल में बदलाव करते हैं तो हमें स्क्रिप्ट के पुनर्जनन में परेशानी होती है। कॉन्फ़िगरेशन फ़ाइल में 3.5 से 4.0 भी बदलते हैं।

उस बिंदु पर, आप इकाई की रूपरेखा 4 उपयोग करने के लिए अपने डेटाबेस के साथ काम करने में सक्षम होना चाहिए।

1

जैसा कि मैंने यह समझ VS 2010 के वर्तमान संस्करण एसक्यूएल सीई 4.0 के लिए समर्थन नहीं है। इसे वीएस 2010 एसपी 1 (वर्तमान में बीटा में) में शामिल किया जाना चाहिए। this blog post देखें जो एसपी 1 में एसक्यूएल सीई 4.0 के साथ ईएफ मॉडल का उपयोग करने का भी वर्णन करता है।

संपादित करें:

मैं इस workaround पाया।

+1

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

+0

मुझे किसी अन्य चीज की खोज करते समय कुछ कामकाज मिला। मैंने अपने जवाब में लिंक जोड़ा। –

2

नीचे टिप्पणी का उत्तर देने के लिए और उन्हें सुलझाने के अनुसार: http://blogs.msdn.com/b/sqlservercompact/archive/2011/01/12/microsoft-sql-server-compact-4-0-is-available-for-download.aspx

इन जादूगरों काम नहीं करने के लिए। वीबी या दृश्य स्टूडियो 2010 SP1 बीटा में सी # विंडोज परियोजनाओं में

डिजाइनर: निम्नलिखित जादूगरों कॉम्पैक्ट 4.0 विंडोज परियोजना प्रणाली में साथ काम नहीं करते। डेवलपर्स मैन्युअल कॉम्पैक्ट 4.0 (System.Data.SqlServerCe) के लिए ADO.NET प्रदाता के लिए संदर्भ जोड़ने कॉम्पैक्ट 4.0 विंडोज परियोजनाओं में के लिए कार्यक्रमों को विकसित करना कर सकते हैं:

  1. डेटा स्रोत विन्यास जादूगर कि डेटासेट कॉन्फ़िगर करने के लिए प्रयोग किया जाता है।
  2. कॉन्फ़िगर डाटा विन्यास जादूगर है कि स्थापना के लिए का उपयोग कर सिंक FX SQL सर्वर के साथ डेटा के समन्वयन और स्कीमा प्रयोग किया जाता है।
  3. एंटिटी डेटा मॉडल विज़ार्ड जिसका उपयोग कॉम्पैक्ट डेटाबेस से इकाइयों को उत्पन्न करने के लिए किया जाता है।

यहाँ इन मुद्दों के लिए स्वीकार किए जाते हैं काम arounds हैं। http://erikej.blogspot.com/2010/11/using-entity-framework-with-sql-server.html

+0

धन्यवाद, लेकिन मेरी समस्या एंटिटी फ्रेमवर्क 4 के साथ है। ईएफ 4 में * जेनरेट डाटाबेस विज़ार्ड * है जो एक एंटिटी डेटा मॉडल से एसक्यूएल कॉम्पैक्ट डेटाबेस के लिए टी-एसक्यूएल स्क्रिप्ट उत्पन्न करेगा। यह * जेनरेट डेटाबेस विज़ार्ड * है जो एक पीढ़ी विकल्प के रूप में SQL कॉम्पैक्ट 4 नहीं दिखा रहा है। –

+0

यदि आप एक ट्रांजैक्ट एसक्यूएल डीबी स्क्रिप्ट सीई सिंटैक्स के लिए जा रहे हैं तो SQLServer से अलग नहीं है। आपको केवल उस स्क्रिप्ट के साथ तालिकाओं को उत्पन्न करने के लिए अबाउट होना चाहिए। मैं देख रहा हूँ कि तुम्हारी क्या बात है। क्या आपने सर्वर एक्सप्लोरर के साथ कनेक्शन जोड़ने की कोशिश की है? और देखें कि कनेक्शन स्थापित करने के बाद यह आ जाएगा? काश मैं और अधिक मदद कर सकता। – Dimentox

+0

+1: मैं आपकी मदद की सराहना करता हूं। –

0

मैं अपने Chinook.Data परियोजना से किसी भी मुद्दे के बिना डेटाबेस विज़ार्ड उत्पन्न चला सकते हैं, सुनिश्चित करें कि आप अपने app.config में एक उचित कनेक्शन स्ट्रिंग किया हुआ है। http://erikej.blogspot.com/2010/11/using-entity-framework-with-sql-server.html

<?xml version="1.0" encoding="utf-8"?> 
<configuration> 
    <connectionStrings> 
    <add name="ChinookEntities" connectionString="metadata=res://*/ChinookModel.csdl|res://*/ChinookModel.ssdl|res://*/ChinookModel.msl;provider=System.Data.SqlServerCe.4.0;provider connection string=&quot;Data Source=C:\projects\Chinook\Chinook40.sdf&quot;" providerName="System.Data.EntityClient" /> 
    </connectionStrings> 
</configuration> 
+0

धन्यवाद, एरिक - जब आप जेनरेट डेटाबेस विज़ार्ड चलाते हैं, तो क्या आपके पास SQL ​​कॉम्पैक्ट 4.0 के लिए एक प्रविष्टि है? जादूगर मेरे लिए चलता है, लेकिन यह वेर नहीं दिखाता है। एक विकल्प के रूप में 4.0। –

+0

मुझे डीडीएल जेनरेट के साथ दूसरी स्क्रीन मिलती है, लेकिन यह चरण 1 में 4.0 कनेक्शन नहीं दिखाती है, यह सच है। चरण 1 – ErikEJ

+0

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

1

आप IDatabaseInitializer का उपयोग करें और का उपयोग कर

if (File.Exists("Test.sdf")) 
    File.Delete("Test.sdf"); 

string connStr = "Data Source = Test.sdf; Password = <password>"; 

SqlCeEngine engine = new SqlCeEngine(connStr); 
engine.CreateDatabase(); 
engine.Dispose(); 

SqlCeConnection conn = null; 

try { 
    conn = new SqlCeConnection(connStr); 
    conn.Open(); 

    SqlCeCommand cmd = conn.CreateCommand(); 
    cmd.CommandText = "CREATE TABLE myTable (col1 int, col2 ntext)"; 
    cmd.ExecuteNonQuery(); 

catch { 
finally { 
    conn.Close(); 

http://msdn.microsoft.com/en-us/library/system.data.sqlserverce.sqlceengine(v=vs.80).aspx

0

शायद, साथ ही SQL Server Compact 4 tools स्थापित की जरूरत है अगर यह सीधे जब दृश्य स्टूडियो 2010 SP1 स्थापित नहीं किया कोड में डेटाबेस बना सकते हैं स्थापित किया गया था, आप इसे स्थापित कर सकते हैं। जब मुझे समस्या थी तो यह मेरे लिए काम करता था।