13

私は、Entity Framework Code-First規則のスタイルでクラスのセットを定義し、System.ComponentModel.DataAnnotations属性でクラスプロパティを注釈しました。EFコードファーストDbContextクラスからSQL CEデータベースを生成

このコードからSQL Server Compact Edition(SCSE)(4.0)データベースを生成します。

これを実行するにはどのようなコードが必要ですか、どのアセンブリをインポートする必要がありますか?

これまでC:\ Program Files(x86)\ Microsoft SQL Server Compact Edition \ v4.0 \ Desktop {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; } 
    } 
} 
APIは、おそらくかかわらず、EFコード・ファーストCTP 5とRTMの間で変更されますが、これはどのように行うのです

今。

私はそれについて小さいblog postを作った。

2

最良の方法は、NuGetをインストールし、EF CodeFirstとSQL CE 4つのパッケージで遊ぶことだった、もありますサンプルはNuGetからインストールでき、すべてのdb作成戦略のコード例があります。 「AppStart_SQLCEEntityFramework.csは」例のためにそれを参照してくださいと呼ばれるファイルである必要があり、プロジェクトディレクトリのルートに

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

: あなたのような何かをするだろう。

+0

ありがとう!私は自宅にVisual C#Expressをインストールしていますが、それは変更される可能性があります。 –

2

DefaultConnectionProviderを提供する別の方法は、app.configにDefaultConnectionProviderを追加することです。

<entityFramework> 
    <defaultConnectionFactory type="System.Data.Entity.Infrastructure.SqlCeConnectionFactory, EntityFramework"> 
    <parameters> 
     <parameter value="System.Data.SqlServerCe.4.0" /> 
    </parameters> 
    </defaultConnectionFactory> 
</entityFramework> 
関連する問題