一、什么是復(fù)雜類(lèi)型?

書(shū)中說(shuō)道:“復(fù)雜類(lèi)型也可視作值類(lèi)型(?)可以作為附加屬性添加到其他類(lèi)。復(fù)雜類(lèi)型與實(shí)體類(lèi)型的區(qū)別在于復(fù)雜類(lèi)型沒(méi)有其自己的鍵。它是依賴(lài)于其"宿主"類(lèi)型跟蹤變化 和持久化。一個(gè)沒(méi)有Key屬性的類(lèi)型,并且作為屬性映射到一個(gè)或多個(gè)類(lèi)型中,Code First就會(huì)將其視作為復(fù)雜類(lèi)型。Code First將預(yù)設(shè)復(fù)雜類(lèi)型的屬性出現(xiàn)在宿主類(lèi)型映射到數(shù)據(jù)庫(kù)的表中?!?/p>

說(shuō)簡(jiǎn)單一點(diǎn)就是,項(xiàng)目中有個(gè)類(lèi)A,這個(gè)A,會(huì)被其他類(lèi)引用到比如:實(shí)體類(lèi)B 和 實(shí)體類(lèi)C,但是建立數(shù)據(jù)庫(kù)的時(shí)候,我們不想為這個(gè)分割類(lèi)A建立表,而是把A類(lèi)中的屬性等建立到 B 和 C 映射的表中,這時(shí)候,我們管 A 叫做復(fù)雜類(lèi)型。

二、復(fù)雜類(lèi)型和實(shí)體類(lèi)型的區(qū)別

首先還是定義兩個(gè)類(lèi)Person類(lèi)和IDCard類(lèi)還有數(shù)據(jù)庫(kù)上下文。

移動(dòng)開(kāi)發(fā)培訓(xùn),Android培訓(xùn),安卓培訓(xùn),手機(jī)開(kāi)發(fā)培訓(xùn),手機(jī)維修培訓(xùn),手機(jī)軟件培訓(xùn)

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