[Entity Framework] Code First @ SQL Compact EF6.1

[Entity Framework] Code First @ SQL Compact EF6.1

前幾天 EF6.1 才剛 RTM,EntityFramework.SqlServerCompact 也一併到 6.1 了

 

準備環境

  1. 從 Extensions and Updates下載 SQL Server Compact Toolbox
  2. 從 NuGet下載 EntityFramework.SqlServerCompact 6.1.0

 

 

 

參考上篇使用 Code First

http://www.dotblogs.com.tw/yc421206/archive/2014/01/20/141712.aspx

 

連線字串

<add name="DefaultConnection" providerName="System.Data.SqlServerCe.4.0" connectionString="Data Source=|DataDirectory|localdb.sdf" />

完成後,動態產生資料,如下圖:

image

 

到目前使用上沒什麼太大的問題


接下來,我想要用反向工程將已經存在的DB,轉成 Code First 的程式碼,在 VS2013 已經沒有內建 SQLCE 的連線管理,必須要靠 SQL Server Compact Toolbox,然而 SQL Server Compact Toolbox 似乎還沒有轉成 Code First 的模版

image

 

正當覺得失落時,不死心找到了 SSCEVSTools ,可以用它來取代 SQL Server Compact Toolbox 管理

image

http://visualstudiogallery.msdn.microsoft.com/df093e9f-3e74-41c5-aeec-6371436423c5

 

所以可以用它來管理 SQLCE 連線

image

 

 

姑且不論 SSCEVSTools 好不好用(個人覺得不好用),總算在 Server Explorer 看到 SQLCE

image

 

接下來我們就可以利用新功能來產生 Code First 的程式碼,參考上篇 http://www.dotblogs.com.tw/yc421206/archive/2014/03/18/144430.aspx

操作步驟如下所示:

image

image

image

image

產生出來的 Code First

{
    public Model1()
        : base("name=Model1")
    {
    }

    public virtual DbSet<Customers> Customers { get; set; }
    public virtual DbSet<Products> Products { get; set; }

    protected override void OnModelCreating(DbModelBuilder modelBuilder)
    {
        modelBuilder.Entity<Customers>()
            .HasMany(e => e.Products)
            .WithOptional(e => e.Customers)
            .HasForeignKey(e => e.Customer_Id);
    }
}

連線字串

<add name="Model1" connectionString="Data Source=C:\Users\s01yao\Desktop\SqlCeCodeFirst\bin\Debug\localdb.sdf" providerName="System.Data.SqlServerCe.4.0" />


 

 

文章出自:http://www.dotblogs.com.tw/yc421206/archive/2014/03/19/144449.aspx

若有謬誤,煩請告知,新手發帖請多包涵


Microsoft MVP Award 2010~2017 C# 第四季
Microsoft MVP Award 2018~2022 .NET

Image result for microsoft+mvp+logo