原文地址:http://www.entityframeworktutorial.net/code-first/table-dataannotations-attribute-in-code-first.aspx Table特性可以應用於一個領域類上面,用來在資料庫中生成相應名稱的數據表。它重寫了EF ...
原文地址:http://www.entityframeworktutorial.net/code-first/table-dataannotations-attribute-in-code-first.aspx
Table特性可以應用於一個領域類上面,用來在資料庫中生成相應名稱的數據表。它重寫了EF 6和 EF Code 中預設的約定,根據預設約定,EF 6和EF Core創建的表的名稱是實體名稱+s(或者es),並且創建的數據表的列名稱和實體屬性名稱一樣。
Table Attribute: [Table(string name, Properties:[Schema = string])
name:數據表的名稱
Schema:資料庫的模式名稱【可選的】
在上面的例子中,Table特性應用於Student實體上。所以,EF將會重寫預設的約定,並且創建名稱為StudentMaster的數據表,而不是名稱為Students的數據表,例如:
使用Schema
屬性來指定數據表的模式名稱:
EF將會創建StudentMaster表,並且指定表的模式名為Admin:
好了,理論介紹完了,我們動手實踐一下:
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,就介紹完了,大家有不明白的可以留言,我會一一回覆,謝謝支持!