使用EF 連線 資料庫 SQLserver、MySql 實現 CodeFirst

宁静致远·TangJ發表於2024-07-03

1.新建專案,下載Nuget安裝包

建立專案需要注意幾點,如果是基於 .net framework 的專案 需要選擇 相應版本的 EF, 如果是跨平臺則選擇EF Core版本。

我這裡選擇的是 .net framework 版本。紅框裡面是 實現EF Code First 需要的包。

對應的版本:

EntityFramework 6.3.0

MySql.Data 6.8.8

MySql.Data.Entities 6.8.3

如果是連線SqlServer 很簡單,直接下載 EntityFramework 6.3.0 這個一個包就行了。程式集會引入這兩個元件。然後編寫程式碼即可。

針對MySQL 需要再下載這兩個包

下載完成後設定App.config或者 Web.config 檔案 ,這一步下載包的時候一般會自動新增,如果沒有的話就手動加一下

  <entityFramework>
    <providers>
    <provider invariantName="System.Data.SqlClient" type="System.Data.Entity.SqlServer.SqlProviderServices, EntityFramework.SqlServer" />
    <provider invariantName="MySql.Data.MySqlClient" type="MySql.Data.MySqlClient.MySqlProviderServices, MySql.Data.Entity.EF6, Version=6.8.3.0, Culture=neutral, PublicKeyToken=c5687fc88969c44d"></provider>
    </providers>
  </entityFramework>

2.建立EFModel

using System;
using System.Collections.Generic;
using System.ComponentModel.DataAnnotations;
using System.ComponentModel.DataAnnotations.Schema;
using System.Data.Entity;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace ConsoleWebSocket.Models
{
    [Table("BaseDevice")]
    public class BaseDevice
    {
        [Key]
        public int Id { get; set; }
        public string Name { get; set; }
        public string Description { get; set; }
    }

    public class BaseDeviceDbContext : DbContext
    {
        public BaseDeviceDbContext()
           : base("myConn")
        {
            Database.SetInitializer(new DropCreateDatabaseIfModelChanges<BaseDeviceDbContext>());
        }

        public DbSet<BaseDevice> BaseDevice { get; set; }
    }
}

4.運算元據庫 測試

        /// <summary>
        /// code first 
        /// </summary>
        public static void TestCodeFirst()
        {
            using (var context = new BaseDeviceDbContext())
            {
                // 查詢資料
              List<BaseDevice> models = context.BaseDevice.ToList();

                // 新增資料
                context.BaseDevice.Add(new BaseDevice { Id = 1, Name = "New Model", Description= "Description" });
                context.BaseDevice.Add(new BaseDevice { Id = 3, Name = "New Model", Description = "Description" });
                context.SaveChanges();

                //// 更新資料
                var model = context.BaseDevice.FirstOrDefault(m => m.Id == 1);
                if (model != null)
                {
                    model.Name = "Updated Name";
                    context.SaveChanges();
                }

                // 刪除資料
                context.BaseDevice.Remove(model);
                context.SaveChanges();
            }
        }

相關文章