zoukankan      html  css  js  c++  java
  • EF4.0 POCO之继承

    最近一直在看关于EF4.0的POCO的一些文章,自己也想做一些POCO的测试,正好看到风车车Entity Framework 4 第一篇 POCO双鱼座POCO真那么重要么?,对于风车车EF4系列的第一篇POCO中就使用Code Only来讲解有点不太适应,呵呵,一下子就进入了没有edmx的时代了,过度太快了:)。看了双鱼座大侠的文章,感觉是真正的面向对象的设计,并且从正文中进入了这篇文章:体验ADO.NET Entity Framework的继承,不管POCO是否重要(个人比较倾向于使用POCO),既然EF4.0支持POCO,那么我们就来测试一下吧,我直接使用了《体验ADO.NET Entity Framework的继承》文中例子(希望双鱼座大侠不要怪罪)。

    使用vs2010 Beta2打开《体验》文中的例子,完成升级向导,我们还是使用“传统”一点的方式来体验POCO,右键点击InheritanceDemoModel.edmx选择属性,删除Custom tool,如下图所示:

    image

    新建如下实体类,其他代码略掉,请参考文后的代码附件:

    public class Privilege
        {
            private IList<Role> roles = new List<Role>();
            public int Id { get; set; }
            public string Handle { get; set; }
            public string Display { get; set; }
            public IList<Role> Roles { get { return roles; } set { roles = value; } }
        }  

    还有DemoEntities,因为删除Custom Tool之后,不能自动生成代码,所以需要手写代码:

    public class DemoEntities : ObjectContext
        {
            public DemoEntities()
                : base("name=DemoEntities", "DemoEntities")  
            {
                _roles = CreateObjectSet<Role>();
                _privileges = CreateObjectSet<Privilege>();
                _userOrGroups = CreateObjectSet<UserOrGroup>();
                }
    
            public ObjectSet<Role> Roles
            {
                get 
                { 
                    return _roles; 
                }
            }
            private ObjectSet<Role> _roles;
    
            public ObjectSet<Privilege> Privileges
            {
                get
                {
                    return _privileges;
                }
            }
            private ObjectSet<Privilege> _privileges;
            public ObjectSet<UserOrGroup> UserOrGroups
            {
                get
                {
                    return _userOrGroups;
                }
            }
            private ObjectSet<UserOrGroup> _userOrGroups;
        
            public void AddToUserOrGroups(UserOrGroup userOrGroup)
            {
                _userOrGroups.AddObject(userOrGroup);
            }
    
            public void AddToRoles(Role role)
            {
                _roles.AddObject(role);
            }
    
            public void AddToPrivileges(Privilege privilege)
            {
                _privileges.AddObject(privilege);
            }
        }

    单元测试代码不用作修改,直接运行单元测试,全部通过。

     本文源代码下载,注意修改单元测试项目下的App.Config中的连接字符串

  • 相关阅读:
    洛谷 P2384 最短路
    洛谷 P2910 [USACO08OPEN]寻宝之路Clear And Present Danger
    POJ 3264 Balanced Lineup
    洛谷 P1892 团伙
    洛谷 P1724 东风早谷苗
    P1129 [ZJOI2007]矩阵游戏
    P1894 [USACO4.2]完美的牛栏The Perfect Stall
    Poj 3041 Asteroids
    P3377 【模板】左偏树(可并堆)
    P1613 跑路
  • 原文地址:https://www.cnblogs.com/tubo/p/1642045.html
Copyright © 2011-2022 走看看