Entity Framework Code First for SQL Compact

來源:互聯網
上載者:User

標籤:msdn   應用   asp   int   dep   lin   sdn   位置   produce   

這篇部落格將介紹EF Code First中如何使用SQL Compact。SQL Compact是微軟推出的免費的關係型資料庫,目前最新版本是SQL Compact 4.0。微軟的開發工具VS 2010/SQL Server 2008及後續版本中均不帶有SQL Compac 3.5/4.0t資料庫查看工具。不過CodePlex上有一個SqlCeToolbox的工具非常不錯。有點兒像精簡版的SQL Server Management Studio。

SQL Compact可以用於以下的一些情境,例如在WindowPhone的應用,傳統型程式等(當然也可以使用Sqlite)。下面通過一個例子介紹如何使用EF Code First產生SQL Compact資料庫。

1. 在程式中引用Entity Framework for SQL Compact相關DLL,可以通過Nuget,命令:PM> Install-Package EntityFramework.SqlServerCompact (注意如果需要產生SQL Compact 3.5,Nuget命令:Install-Package EntityFramework.SqlServerCompact.Legacy)

2. 項目結構:Models中存放的是資料庫實體類(Actor.cs/FilmActorRole.cs/FilmGenere.cs/FilmTitle.cs/Producer.cs/Role.cs),Context中存放資料庫上下文(DvdContext.cs)。因為是一個Demo,就把這些放在一個工程下面。在真實項目中,建議把Models/Context分別放在不同的類庫中,這樣便於維護,程式的結構也更加清晰。

下面展示一下FilmActorRole類,程式中使用EntityFramework DataAnnotations的方式來描述Model類,

    [Table("FilmActorRole")]    public class FilmActorRole    {        [Key]        public int Id { get; set; }        [Required]        public int FilmTitleId { get; set; }        [ForeignKey("FilmTitleId")]        public FilmTitle FileTitle { get; set; }        [Required]        public int ActorId { get; set; }        [ForeignKey("ActorId")]        public Actor Actor { get; set; }        [Required]        public int RoleId { get; set; }        [ForeignKey("RoleId")]        public Role Role { get; set; }        [Required]        [StringLength(255)]        public string Character { get; set; }        [Required]        [StringLength(1024)]        public string Description { get; set; }    }

關於EntityFramework DataAnnotations的內容,請參考:https://msdn.microsoft.com/en-us/data/jj591583.aspx

DvdContext.cs

    public class DvdContext : DbContext    {        public DbSet<Actor> Actors{ get; set; }        public DbSet<FilmActorRole> FilmActorRoles { get; set; }        public DbSet<FilmGenere> FilmGeneres { get; set; }        public DbSet<FilmTitle> FilmTitles { get; set; }        public DbSet<Producer> Producers { get; set; }        public DbSet<Role> Roles { get; set; }        public DvdContext()            :base("DvdConnectionString")        {        }    }

在App.config中需要配置DvdConnectionString,

  <connectionStrings>    <add name="DvdConnectionString" connectionString="Data source=|DataDirectory|DvdDatabase.sdf;" providerName="System.Data.SqlServerCe.4.0"/>  </connectionStrings>

上面的設定檔中有一個DataDirectory,這表示資料庫存放的目錄。通常情況下會把資料庫放置在一個特殊位置,例如使用者檔案夾下,這樣在程式卸載時不會被刪除掉。我們需要在程式啟動時,設定DataDirectory,例如:

        static void Main(string[] args)        {            // 設定Database的位置:            AppDomain.CurrentDomain.SetData("DataDirectory", Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData));        }

下面看如何產生當前資料庫:

    using (DvdContext db = new DvdContext())    {        if(!db.Database.Exists())        {            db.Database.Create();        }    }

我們可以使用LINQ的方式對資料庫進行增刪改查操作。

感謝您的閱讀,代碼點擊這裡下載。

 

Entity Framework Code First for SQL Compact

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.