13

Entity Framework Code-First規則のスタイルでクラスのセットを定義し、System.ComponentModel.DataAnnotations属性でクラスプロパティに注釈を付けました。

次に、このコードから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ファイル。

どんなポインタでもありがたいです。記事など。

4

4 に答える 4

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 = "bob@example.com"
                };

                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 Code-First CTP 5 と RTM の間で変更される可能性がありますが、現在はこのようになっています。

私はそれについての小さなブログ記事を作りました。

于 2011-01-31T05:06:31.043 に答える
2

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

<entityFramework>
  <defaultConnectionFactory type="System.Data.Entity.Infrastructure.SqlCeConnectionFactory, EntityFramework">
    <parameters>
      <parameter value="System.Data.SqlServerCe.4.0" />
    </parameters>
  </defaultConnectionFactory>
</entityFramework>
于 2012-08-23T07:34:40.017 に答える
2

このブログと同じリンクを参照してください (たとえば、ScottGu の記事): http://erikej.blogspot.com/2011/01/sql-server-compact-40-released.html

于 2011-01-30T10:01:46.533 に答える
2

私が見つけた最良の方法は、NuGet をインストールして EF CodeFirst および SQL CE 4 パッケージを試すことでした。また、すべてのデータベース作成戦略のコード例を含む NuGet からインストールできるサンプルもあります。あなたは次のようなことをします:

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

プロジェクト ディレクトリのルートには、「AppStart_SQLCEEntityFramework.cs」というファイルが必要です。例については、それを参照してください。

于 2011-01-30T10:21:50.893 に答える