13

से एसक्यूएल सीई डेटाबेस जेनरेट करें मैंने एंटीटी फ्रेमवर्क कोड-प्रथम सम्मेलनों की शैली में कक्षाओं का एक सेट परिभाषित किया है और सिस्टम गुणों के साथ वर्ग गुणों को एनोटेट किया है। कॉम्पोनेंट मॉडेल। डेटाएनोटेशन विशेषताओं।ईएफ कोड-फर्स्ट डीबीकॉन्टेक्स्ट क्लास

अब मैं इस कोड से एक SQL सर्वर कॉम्पैक्ट संस्करण (एससीएसई) (4.0) डेटाबेस जेनरेट करना चाहता हूं।

ऐसा करने के लिए किस कोड की आवश्यकता है और किन विधानसभाओं को आयात करने की आवश्यकता है?

अब तक मैं सी आयात किया है: \ Program Files (x86) \ Microsoft SQL सर्वर कॉम्पैक्ट संस्करण \ v4.0 \ डेस्कटॉप {System.Data.SqlServerCe.dll, System.Data.SqlServerCe.Entity \ System। Data.SqlServerCe.Entity.dll} dll फ़ाइलें।

किसी भी पॉइंटर्स की सराहना की। लेख और क्या नहीं।

उत्तर

15

मुझे समाधान मिला।

DbDatabase.DefaultConnectionFactory = new 
         SqlCeConnectionFactory("System.Data.SqlServerCe.4.0"); 

यहाँ एक पूर्ण नमूना है:: महत्वपूर्ण बात यह है कि कोड की इस पंक्ति है

using System; 
using System.Collections.Generic; 
using System.Linq; 
using System.Text; 

namespace Proto 
{ 
    using System.Data; 
    using System.Data.Entity; 
    using System.Data.Entity.Database; 
    using System.Data.SqlServerCe; 
    using System.ComponentModel.DataAnnotations; 

    class Program 
    { 
     static void Main(string[] args) 
     { 
      DbDatabase.DefaultConnectionFactory = new 
         SqlCeConnectionFactory("System.Data.SqlServerCe.4.0"); 
      DbDatabase.SetInitializer(
         new DropCreateDatabaseIfModelChanges<ProtoCatalog>() 
       ); 

      using (var db = new ProtoCatalog()) 
      { 
       var user = new User 
       { 
        Name = "bob", 
        Password = "123", 
        Creation = DateTime.Now, 
        PrimaryEmailAddress = "[email protected]" 
       }; 

       db.Users.Add(user); 

       db.SaveChanges(); 

       Console.ReadKey(); 
      } 
     } 
    } 

    public class ProtoCatalog : DbContext 
    { 
     public DbSet<User> Users { get; set; } 
    } 

    public class User 
    { 
     [Key, StringLength(50)] 
     public string Name { get; set; } 

     [Required, StringLength(100)] 
     public string Password { get; set; } 

     [Required, StringLength(320)] 
     public string PrimaryEmailAddress { get; set; } 

     [StringLength(320)] 
     public string SecondaryEmailAddress { get; set; } 

     [Required] 
     public DateTime Creation { get; set; } 

     public bool Active { get; set; } 
    } 
} 

एपीआई शायद एफई कोड-पहले CTP 5 और आरटीएम के बीच बदल जाएगा, हालांकि, लेकिन यह कि यह कैसे हुआ है अभी व।

मैंने इसके बारे में एक छोटा blog post बनाया है।

2

सबसे अच्छा तरीका मैंने पाया NuGet स्थापित करने और एफई CodeFirst और SQL सीई 4 संकुल के साथ खेलने के लिए गया था, वहाँ भी एक है नमूना आप NuGet से स्थापित कर सकते हैं जिसमें सभी डीबी निर्माण रणनीतियों के लिए कोड उदाहरण हैं। आप की तरह कुछ करना होगा:

install-package EFCodeFirst.SqlServerCompact 
install-package EFCodeFirst.Sample 

अपनी परियोजना निर्देशिका की जड़ में एक फ़ाइल बुलाया "AppStart_SQLCEEntityFramework.cs" उदाहरण के लिए कि का उल्लेख होना चाहिए।

+0

धन्यवाद! मेरे पास घर पर दृश्य सी # एक्सप्रेस स्थापित है लेकिन यह बदल सकता है। –

2

DefaultConnectionProvider प्रदान करने का एक और तरीका इसे app.config में जोड़कर है।

<entityFramework> 
    <defaultConnectionFactory type="System.Data.Entity.Infrastructure.SqlCeConnectionFactory, EntityFramework"> 
    <parameters> 
     <parameter value="System.Data.SqlServerCe.4.0" /> 
    </parameters> 
    </defaultConnectionFactory> 
</entityFramework>