[Asp.net] Code First 初體驗

  • 447
  • 0

第一次使用Code First建立資料庫的學習筆記

前言

Entity Framework 的建置分成Database First Code First Model First三種
自己比較常用的是Database First
但因專案需求需要用Code First
於是有的這次的學習

規劃資料圖表

我這次設計了兩張表,分別為Department(部門)與Member(員工)
這兩張表分別為一對多的關係,一個部門可以對到多個員工

實作程式

建立部門物件

    /// <summary>
    /// 部門
    /// </summary>
    class Department
    {
        public Guid DepartmentId { get; set; }
        public string DepartmentName { get; set; }

        public virtual List<Member> Members { get; set; }
    }

我使用了Guid來做為部門的ID
下方public virtual List Members { get; set; }指的是一個部門可以對到多個員工
也就是這張表的關聯性

建立員工物件

    /// <summary>
    /// 員工
    /// </summary>
    class Member
    {
        public int MemberId { get; set; }
        public string MemberName { get; set; }

        public Guid DepartmentId { get; set; }
        public virtual Department Department { get; set; }
    }

相對於部門
public virtual Department Department { get; set; }指的是員工對部門的一對一的關係
而因為是以Department的ID作為FK來對應
所以需要將DepartmentId一起設定進來

建立DBContext

    class CompanyContext : DbContext
    {
        public DbSet<Department> Departments { get; set; }
        public DbSet<Member> Members { get; set; }
    }

這裡就是設定需要使用到的資料表
CompanyContext指的就是我們的DB

建立執行程序

    class Program
    {
        static void Main(string[] args)
        {
            using (var db = new CompanyContext())
            {
                Console.Write("Insert Department Name:");
                var depName = Console.ReadLine();

                var dep = new Department { DepartmentId = Guid.NewGuid(), DepartmentName = depName };
                db.Departments.Add(dep);
                db.SaveChanges();

                var qry = from d in db.Departments
                          select d;

                foreach (var item in qry)
                {
                    Console.WriteLine($@"ID = {item.DepartmentId} , Name = {item.DepartmentName}");
                }

                Console.WriteLine("Press any key to quite.");
                Console.ReadKey();
            }
        }
    }

本範例僅Insert部門
歡迎自行修改

執行結果

範例程式

https://github.com/charley85470/CodeFirstTestProj

參考資料

https://msdn.microsoft.com/zh-tw/data/jj193542(v=vs.113).aspx

Write By Charley Chang 


新手發文,若有錯誤還請指教,
歡迎留言或Mail✉給我

創用 CC 授權條款


本著作係採用創用 CC 姓名標示-非商業性-相同方式分享 4.0 國際 授權條款授權.