天天看点

Entity FrameWork复杂属性摸索

最近公司的项目要用到Entity Framework,里面牵扯到实体复杂属性的设计,我摸索了好长时间都没搞懂这个在模型浏览器里该怎么添加,今晚回来加了一会儿班,总算搞出来了。

下面记录下是怎么操作的,以免再次有需要的时候忘记了。

备注:我用的工具是VS2013,选用的Entity Framewok 6.0版本。

创建一个控制台项目,起名“TestProject”,添加一个ADO.Net 实体数据模型,起名“Test”,然后点击添加。

接下来会弹出一个窗口,询问我们是从数据库生成21模型还是创建一个空模型,因为我用的是Model First模式,所以我选择创建空模型。

Entity FrameWork复杂属性摸索

创建好模型之后,我们添加实体,起名“Employee”。

接下来再给这个实体添加三个标量属性:Name,Age,Phone和一个复杂属性HomeTown(由Province,City,Area三个部分组成)。标量属性直接添加就可以了,我们说说HomeTown这个复杂属性如何添加。

首先,我们打开VS右侧的  “模型浏览器”  选项卡,在Test(也就是我们创建的实体数据模型的名字)节点下我们可以看到“复杂属性”这个节点:

Entity FrameWork复杂属性摸索

右击它  —— 点击“添加新的复杂属性”并将其命名为Address,这样我们就创建了一个复杂属性,接下来我们给Address添加Province,City,Area这三个标量属性。

Entity FrameWork复杂属性摸索

上面这三个属性都是String类型的。

Entity FrameWork复杂属性摸索

上面的步骤进行完之后我们就可以给刚刚创建的实体Employee添加这个复杂属性了,我们右击实体,点击 新增 —— 复杂属性,命名为HomeTown,然后设置HomeTown的类型为刚刚创建的Address类型。

Entity FrameWork复杂属性摸索

到这里,一个完整的实体模型就建好了,最后我们来生成一下数据库。

Entity FrameWork复杂属性摸索
Entity FrameWork复杂属性摸索
Entity FrameWork复杂属性摸索

我们接下来插入一条数据试试。

static void Main(string[] args)
        {
            using(TestContainer db = new TestContainer())
            {
                Employee emp = new Employee()
                {
                    Name = "张三",
                    Age = "25",//原谅我,刚刚年龄忘记设成Int型了
                    Phone = "13333333333",
                    HomeTown = new Address() 
                    {
                        Province="江苏",
                        City="南通",
                        Area="通州"
                    }
                };
                db.EmployeeSet.Add(emp);
                db.SaveChanges();
            }
        }
           
Entity FrameWork复杂属性摸索