EFCore code first 建立資料庫

2021-10-04 15:29:33 字數 2216 閱讀 8419

此處記錄學習efcore 過程中一些學習筆記:

1.code first 建立資料庫,一對多關係對應為乙個物件擁有乙個集合,這個集合使用virtual標識以便使用lazyloading,另一方面被擁有的物件也有所屬物件及所屬物件id。多對多關係除了兩個物件分別用擁有對方集合方式表示外,還得有兩個物件關係物件儲存關係所屬物件。型別關係展示如下所示:

乙個customer有多個訂單:

public partial class customers

[key]

public int id

public string firstname

public string lastname

public string address

public string phone

public string email

[inverseproperty("customer")]

public virtual icollectionorders

}

乙個訂單order屬於乙個customer,並且乙個訂單包含多個商品product

public partial class orders

[key]

public int id

public datetime orderplaced

public datetime? orderfulfilled

public int customerid

[foreignkey(nameof(customerid))]

[inverseproperty(nameof(customers.orders))]

public virtual customers customer

[inverseproperty("order")]

public virtual icollectionproductorders

}

乙個商品product分布在多個訂單中:

public partial class products

[key]

public int id

[required]

public string name

[column(typename = "decimal(18, 2)")]

public decimal price

[inverseproperty("product")]

public virtual icollectionproductorders

}

此關係物件為訂單,商品多對多關係物件:

public partial class productorders

public int quantity

public int productid

public int orderid

[foreignkey(nameof(orderid))]

[inverseproperty(nameof(orders.productorders))]

public virtual orders order

[foreignkey(nameof(productid))]

[inverseproperty(nameof(products.productorders))]

public virtual products product

}

code first建立物件之後,得再建立dbcontext物件,將那些是表給用dbset標識出來:

public class contosopetscontext:dbcontext

public dbsetorders

public dbsetproducts

public dbsetproductorders

protected override void onconfiguring(dbcontextoptionsbuilder optionsbuilder)

}

之後用包管理控制台輸入命令:add-migration initialcreat 建立物件資料庫。之後update-database將更新到資料庫。加欄位或者修改字段之後,執行add-migration addormodifyfiled進行同步更新到資料庫。

EFCore CodeFirst 註解特性

table特性可以應用於乙個領域類上面,用來在資料庫中生成相應名稱的資料表。它重寫了ef 6和 ef code 中預設的約定,根據預設約定,ef 6和ef core建立的表的名稱是實體名稱 s 或者es 並且建立的資料表的列名稱和實體屬性名稱一樣。table attribute table stri...

c mysql 建立資料庫 MySQL 建立資料庫

建立 mysql 資料庫 使用 mysqladmin 建立資料庫 建立或刪除資料庫需要擁有特殊的許可權。假設你獲得了root使用者許可權,那麼利用 mysqladmin 二進位制命令可以建立任何資料庫。範例下面就來建立乙個名叫 tutorials 的資料庫 root host mysqladmin ...

SQLiteOpenHelper建立資料庫問題

api上的解釋 public abstract void oncreate sqlitedatabase db 在資料庫第一次建立的時候呼叫。這是建立資料表和初始化表資料的地方。oncreate 是你在呼叫getwritabledatabase 或者getreadabledatabase 時,如果沒...