程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> .NET網頁編程 >> 關於.NET >> Entity Framework 教程——Entity Framework中的實體類型,entityframework

Entity Framework 教程——Entity Framework中的實體類型,entityframework

編輯:關於.NET

Entity Framework 教程——Entity Framework中的實體類型,entityframework


Entity Framework中的實體類型 :

在之前的章節中我們介紹過從已有的數據庫中創建EDM,它包含數據庫中每個表所對應的實體。在EF 5.0/6.0中,存在POCO 實體和動態代理實體兩種。

POCO Entity (Plain Old CLR Object):

POCO類是不依賴任何框架的類型,如同其他正常的一般類型,我們稱之為"Plain Old CLR Objects"(這裡不知道怎麼翻譯,普通的CLR對象?古老的CLR對象?大概意思就是沒有什麼特殊的對象吧)。

POCO 實體(又名非持久化對象)是又EDM創建出來的支持查詢,插入,更新,刪除行為的實體類型。下面是一個Student 的 POCO 實體

 1 public class Student
 2 {
 3     public Student()
 4     {
 5         this.Courses = new List<Course>();
 6     }
 7     
 8     public int StudentID { get; set; }
 9     public string StudentName { get; set; }
10     public Nullable<int> StandardId { get; set; }
11     
12     public Standard Standard { get; set; }
13     public StudentAddress StudentAddress { get; set; }
14     public IList<Course> Courses { get; set; }
15 }
16         
View Code

動態代理 (POCO 代理):

動態代理是POCO實體的運行時代理,它看起來先POCO實體的封裝類。動態代理實體允許懶加載和自動更改追蹤。

POCO實體滿足一下的條件即為POCO代理:

下面 Student 的POCO實體滿足以上所有條件,那麼它將成為動態代理實體。

 1  public class Student
 2         {
 3             public Student()
 4             {
 5                 this.Courses = new HashSet<Course>();
 6             }
 7     
 8             public int StudentID { get; set; }
 9             public string StudentName { get; set; }
10             public Nullable<int> StandardId { get; set; }
11     
12             public virtual Standard Standard { get; set; }
13             public virtual StudentAddress StudentAddress { get; set; }
14             public virtual ICollection<Course> Courses { get; set; }
15         }
View Code

注意 : 默認情況下所有實體都允許動態代理,當然你也可以在context類中禁用它。

context.Configuration.ProxyCreationEnabled = false;

EDM默認創建的都是這類代理實體

在運行時Student的類型會變成System.Data.Entity.DynamicProxies.Student

從動態代理中獲取實際的類型 : 

你可以通過ObjectContext.GetObjectType()方法從動態代理中獲取實際的類型

實體有兩種類型的屬性,標量屬性和導航屬性。

標量屬性:

標量屬性是實體中包含的實際值。例如,Student 實體中如StudentId 和 StudentName的屬性。這些對應Student 表中的列。

導航屬性:

導航屬性指向其他相關的實體。Student 類中有一個Standard 的導航屬性,它使應用程序能通過Student 關系到對應的Standard 實體中。

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved