一、什么是复杂类型?

书中说道:“复杂类型也可视作值类型(?)可以作为附加属性添加到其他类。复杂类型与实体类型的区别在于复杂类型没有其自己的键。它是依赖于其"宿主"类型跟踪变化 和持久化。一个没有Key属性的类型,并且作为属性映射到一个或多个类型中,Code First就会将其视作为复杂类型。Code First将预设复杂类型的属性出现在宿主类型映射到数据库的表中。”

说简单一点就是,项目中有个类A,这个A,会被其他类引用到比如:实体类B 和 实体类C,但是建立数据库的时候,我们不想为这个分割类A建立表,而是把A类中的属性等建立到 B 和 C 映射的表中,这时候,我们管 A 叫做复杂类型。

二、复杂类型和实体类型的区别

首先还是定义两个类Person类和IDCard类还有数据库上下文。

移动开发培训,Android培训,安卓培训,手机开发培训,手机维修培训,手机软件培训

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