13

SQL CE veritabanı oluşturun ve System.ComponentModel.DataAnnotations niteliklerini sınıf özelliklerini açıklamalı.Ben tanımladığınız Varlık Framework Code-İlk sözleşmeler tarzında sınıflar kümesi EF Code-İlk DBContext sınıfından

Şimdi bir SQL Server Compact Edition (SCSE) bu koddan (4.0) veritabanını oluşturmak istiyorum. Bunu yapmak için gerekli ve hangi montajlar ihtiyaç nedir kod

ithal edilecek?

Şimdiye kadar C ithal ettik: \ Program Files Desktop {System.Data.SqlServerCe.dll, System.Data.SqlServerCe.Entity \ System \ Microsoft SQL Server Compact Edition \ v4.0 \ (x86). Data.SqlServerCe.Entity.dll} dll dosyaları.

bir işaretçiler takdir. Makaleler ve ne var?

cevap

15

Çözümü buldum.

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

İşte tam örnek var: Kritik şey bu kod çizgidir

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; } 
    } 
} 
API muhtemelen olsa EF Kod-Birinci CTP 5 ve RTM arasında değişecek, ama bu böyle yapılır

şimdi.

bu konuda küçük bir blog post yaptık.

2

iyi yolu Nuget yüklemek ve EF CodeFirst ve SQL CE 4 paketleri ile oynamak olduğuna, aynı zamanda bir var Tüm db oluşturma stratejileri için kod örnekleri olan NuGet'ten yükleyebileceğiniz örnek. "AppStart_SQLCEEntityFramework.cs" örnekler için bu bakınız adlı bir dosya olmalıdır proje dizininin kökü olarak

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

: Sen böyle bir şey yapsın.

+0

Teşekkürler! Sadece evde Visual C# Express yüklü, ancak bu değişebilir. –

2

DefaultConnectionProvider temin edilmesinin bir başka yolu, app.config ekleyerek gereğidir.

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