一、什么是復(fù)雜類型?
書中說道:“復(fù)雜類型也可視作值類型(?)可以作為附加屬性添加到其他類。復(fù)雜類型與實(shí)體類型的區(qū)別在于復(fù)雜類型沒有其自己的鍵。它是依賴于其"宿主"類型跟蹤變化 和持久化。一個(gè)沒有Key屬性的類型,并且作為屬性映射到一個(gè)或多個(gè)類型中,Code First就會(huì)將其視作為復(fù)雜類型。Code First將預(yù)設(shè)復(fù)雜類型的屬性出現(xiàn)在宿主類型映射到數(shù)據(jù)庫的表中?!?/p>
說簡(jiǎn)單一點(diǎn)就是,項(xiàng)目中有個(gè)類A,這個(gè)A,會(huì)被其他類引用到比如:實(shí)體類B 和 實(shí)體類C,但是建立數(shù)據(jù)庫的時(shí)候,我們不想為這個(gè)分割類A建立表,而是把A類中的屬性等建立到 B 和 C 映射的表中,這時(shí)候,我們管 A 叫做復(fù)雜類型。
二、復(fù)雜類型和實(shí)體類型的區(qū)別
首先還是定義兩個(gè)類Person類和IDCard類還有數(shù)據(jù)庫上下文。
using System;using System.Collections.Generic;using System.Linq;using System.Text;using System.Threading.Tasks;using System.Data.Entity;using EFCodeFirstModels;using System.Configuration;namespace EFCodeFirstDataAccess { public class EFCodeFirstDbContext:DbContext { public EFCodeFirstDbContext() : base("MyStrConn") { } public DbSet<Pe