【问题标题】:Generate SQL CE database from EF Code-First DbContext class从 EF Code-First DbContext 类生成 SQL CE 数据库
【发布时间】:2011-06-17 19:35:15
【问题描述】:

我以实体框架代码优先约定的风格定义了一组类,并使用 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 文件。

任何指针表示赞赏。文章等等。

【问题讨论】:

    标签: .net entity-framework sql-server-ce code-first ef-code-first


    【解决方案1】:

    提供 DefaultConnectionProvider 的另一种方法是在 app.config 中添加它。

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

    【讨论】:

      【解决方案2】:

      我找到了解决方案。关键是这行代码:

      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 之间发生变化,但这就是现在的做法。

      我为此做了一个小blog post。

      【讨论】:

        【解决方案3】:

        我发现最好的方法是安装 NuGet 并使用 EF CodeFirst 和 SQL CE 4 包,您还可以从 NuGet 安装一个示例,其中包含所有数据库创建策略的代码示例。 你会做这样的事情:

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

        在您的项目目录的根目录中应该有一个名为“AppStart_SQLCEEntityFramework.cs”的文件,请参阅该文件作为示例。

        【讨论】:

        • 谢谢!我刚刚在家中安装了 Visual C# Express,但这可能会改变。
        【解决方案4】:

        查看此博客和相同的链接(例如 ScottGu 文章):http://erikej.blogspot.com/2011/01/sql-server-compact-40-released.html

        【讨论】:

        • 谢谢。我会检查一下。
        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2012-03-15
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多