Entity Framework(二)
1、 ORM :Object Relation Mapping ,通俗說:用操作對象的方式來操作數據庫。
2、 插入數據不再是執行Insert,而是類似于 Person p=new Person() ; p.Age=3;p.Name="wang" ;db.save(p);這樣的做法;
3、ORM工具有很多Dapper、PetPoco、NHibermate,首推Entity Framework
4、EF底層還是多ADO.Net的封裝.
5、使用EF進行數據庫開發的時候有兩個東西建立:建數據庫,建模型類。根據這兩種創建的先后順序有EF的三種創建方法:
? ?(1) Database First(數據庫優先):先創建數據庫表,然后自動生成EDM文件,EDM文件生成模型類??
? ? (2)Model First (模型優先):先創建Edm文件,Edm文件自動生成模型類和數據庫;
? ? (3)Code First(代碼優先):自己寫模型類,然后生成數據庫,沒有EDM。
?
6、EF安裝
? ? ?(1)基礎階段用控制臺項目,使用Nuget安裝EntityFramework 會自動再APP'config? 中增加兩個EntityFramework相關的配置;
? ? ? (2)在web.cong中配置鏈接字符串:
<connectionStrings><add name="connstr" connectionString=" Data Source=.; Initial Catalog=Test2; User Id=sa; Password=123; " providerName="System.Data.SqlClient" /></connectionStrings>? ? ?
7、 EF簡單DataAnnotations實體配置
? (1)數據庫創建表:T_Persons,有Id(主鍵,自動增長) ,Name,CreateDateTime;
? (2)創建Person類
[Table("T_Persons")] //因為和表名不一樣,所以要使用Table標注;public class Person{public long Id { get; set; }public string Name { get; set; }public DateTime CreateDateTime { get; set; }}? ? ? ? ? ?因為EF約定的主鍵是Id,所以不用再特殊指定Id為主鍵,如果非要指定就用[Key] .因為字段名和屬性名一樣,所以不用再特殊指定關系,如果需要[Column("Name")].
? ? ? ? ? ?必填字段標注[Required]、字段長度[MaxLength(5)] 、可空字段 int?? 、如果字段再數據庫中有默認值,則要再屬性上標注[DatabaeGenerated]? 注意實體類要寫成public ,否則后面會有麻煩;
? ? ? ?(3)創建 DbContext 類(模型類、實體類)
public class TestDbContext:DbContext{public TestDbContext():base("name=connstr")//name=connstr 表示使用連接字符串中名字為connstr的數據庫 {}public DbSet<Person> Persons { get; set; }}? ? ? ? ?(4)測試:
static void Main(string[] args){using (TestDbContext ctx = new TestDbContext()){Person p1 = new Person(){ CreateDateTime = DateTime.Now,Name = "wang"};ctx.Persons.Add(p1);ctx.SaveChanges();}}? ? 注意: MyDbConnect 對象是否需要using有爭議,不using也沒事,每次用的時候new?MyDbConnect就行,不用共享同一實例,共享反而會有問題。saveChanges()才會更新到數據庫中。EF開發團隊都說要using,很多人不用,只是想利用LazyLoad而已,但是那樣做是違反分層的原則的。習慣用using?
?
8、 EF模型的兩種配置方式:
? ? ?EF中的模型類有兩種配置方式:DataAnnotations、FluentAPI兩種。上面這種在模型類上[Table"T_Person")]、[Column("Name")]這種方式就叫 DataAnnotations。這種方式方便,但是耦合度太高,一般的類最好是POCO(就是一個普通的類),不符合大項目開發的要求。微軟推薦使用FluentAPI,因此主要用FluentAPI
?
轉載于:https://www.cnblogs.com/fuyouchen/p/9385463.html
總結
以上是生活随笔為你收集整理的Entity Framework(二)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: MongoDB警告信息
- 下一篇: 深入了解Debug和Release的区别