原文地址:http://www.entityframeworktutorial.net/code-first/table-dataannotations-attribute-in-code-first.aspxhtml
EF 6 Code-First系列文章目錄:數據庫
Table特性能夠應用於一個領域類上面,用來在數據庫中生成相應名稱的數據表。它重寫了EF 6和 EF Code 中默認的約定,根據默認約定,EF 6和EF Core建立的表的名稱是實體名稱+s(或者es),而且建立的數據表的列名稱和實體屬性名稱同樣。app
Table Attribute: [Table(string name, Properties:[Schema = string])
ide
name:數據表的名稱測試
Schema:數據庫的模式名稱【可選的】ui
在上面的例子中,Table特性應用於Student實體上。因此,EF將會重寫默認的約定,而且建立名稱爲StudentMaster的數據表,而不是名稱爲Students的數據表,例如:spa
使用Schema
屬性來指定數據表的模式名稱:.net
EF將會建立StudentMaster表,而且指定表的模式名爲Admin:翻譯
好了,理論介紹完了,咱們動手實踐一下:code
1.建立一個控制檯應用程序,名稱爲:EFAnnotationTable
2.安裝EF:【install-package entityframework -version 6.2.0】
3. 建立一個Student類:
public class Student { public int StudentID { get; set; } public string Name { get; set; } public int Age { get; set; } public string Email { get; set; } }
4.建立一個上下文類EFDbContext:【base中的name=後面名稱要和SQL鏈接字符串名稱同樣。】
public class EFDbContext:DbContext { public EFDbContext() : base("name=Constr") { } public DbSet<Student> StudentTable { get; set; } }
5.配置文件中配置鏈接字符串:
<connectionStrings>
<add name="Constr" connectionString="Server=.;Database=EFAnnotationTableDB;uid=sa;pwd=Password_1" providerName="System.Data.SqlClient"/>
</connectionStrings>
6.測試程序:
class Program { static void Main(string[] args) { using (var db = new EFDbContext()) { List<Student> lstStuModel= db.StudentTable.ToList(); } Console.WriteLine("success"); Console.ReadKey(); } }
運行程序:【出現success字樣,說明已經生成數據庫和數據表成功了!】
咱們看一下數據庫:
這就是EF默認爲咱們生成的數據表,能夠看到,表名稱默認是實體名稱+s後綴。
如今咱們使用數據註解:修改一下Student實體:
運行以前,咱們須要先手動刪除一下剛纔生成的數據庫和數據表。由於這裏我沒有啓用數據庫遷移技術。
能夠看到生成的表名是:StudentInfo了。如今咱們使用數據註解,指定一下表的模式名稱:
算了,我仍是修改一下代碼:省得每次測試都要手動刪除數據庫。【PS:這裏直接運行就會報下圖錯誤:】
咱們改一下:上下文類的代碼,
而後運行:
成功了,咱們看下數據庫:
看到了麼,模式名,變成了咱們設定的My.好了,這一篇數據註解之Table,就介紹完了,你們有不明白的能夠留言,我會一一回復,謝謝支持!