MSDN 說明
使用消極式載入來載入您的物件時,您可能想要使用資料表分割的其中一個原因延遲載入的某些屬性。 您可以分隔可能包含非常大量的資料分成個別的實體,並只載入時所需的屬性。在網路看見的介紹是二進位欄位資料,假如一起抓出來會影響效能,因此利用該方式,把二進位欄位資料拆到另外一個 Entity 去,需要顯示時才載進來使用顯示,該文章是把 Person.HireDate 拆到 HireInfo Entity 去
把 School 範例資料庫 的 Person 拉進來使用
增加實體
建立 HireInfo Entity
把 Person.HireDate Property 剪下
把 HireDate Property 貼上 HireInfo Entity 上
加入 Person 和 HireInfo 的 1 對 1 關聯
輸入關聯相關資訊
點選關聯屬性內的 [參考限制式]
輸入參考限制式相關資料
確認 Person 和 HireInfo 資料表對應
設定完成圖
C# 測試 Code
namespace TableSplitting
{
class Program
{
static void Main(string[] args)
{
using (var context = new SchoolEntities())
{
context.Database.Log = Console.WriteLine;
/***** 新增 Person 資料 *****/
Person person = new Person()
{
FirstName = "Kimberly",
LastName = "Morgan",
Discriminator = "Instructor",
};
person.HireInfo = new HireInfo()
{
HireDate = DateTime.Now
};
context.Person.Add(person);
context.SaveChanges();
/***** 執行 Query 來觀察產生的 TSQL 語法 *****/
// 沒有載入 HireDate 資訊
var existingPerson = context.Person.FirstOrDefault();
// Lazy Loading 載入 HireDate 資訊
var hireInfo = existingPerson.HireInfo;
}
}
}
}
新增資料的 TSQL 語法FirstOfDefault() 時產生的 Select 語法欄位,並沒有 HireDate 欄位資訊,是在呼叫 HireInfo 時,才又產生 TSQL 語法去找出 HireDate 欄位資訊
沒有留言:
張貼留言