LINQ EF DAL层架构扩展示例

Model映射:

 /// <summary>
    /// 没有元数据文档可用。
    /// </summary>
    [EdmEntityTypeAttribute(NamespaceName="SysModel", Name="SysMenu")]
    [Serializable()]
    [DataContractAttribute(IsReference=true)]
    public partial class SysMenu : EntityObject
    {
        #region 工厂方法
    
        /// <summary>
        /// 创建新的 SysMenu 对象。
        /// </summary>
        /// <param name="id">Id 属性的初始值。</param>
        /// <param name="name">Name 属性的初始值。</param>
        public static SysMenu CreateSysMenu(global::System.String id, global::System.String name)
        {
            SysMenu sysMenu = new SysMenu();
            sysMenu.Id = id;
            sysMenu.Name = name;
            return sysMenu;
        }

        #endregion
        #region 基元属性
    
        /// <summary>
        /// 没有元数据文档可用。
        /// </summary>
        [EdmScalarPropertyAttribute(EntityKeyProperty=true, IsNullable=false)]
        [DataMemberAttribute()]
        public global::System.String Id
        {
            get
            {
                return _Id;
            }
            set
            {
                if (_Id != value)
                {
                    OnIdChanging(value);
                    ReportPropertyChanging("Id");
                    _Id = StructuralObject.SetValidValue(value, false);
                    ReportPropertyChanged("Id");
                    OnIdChanged();
                }
            }
        }
        private global::System.String _Id;
        partial void OnIdChanging(global::System.String value);
        partial void OnIdChanged();
    
        /// <summary>
        /// 没有元数据文档可用。
        /// </summary>
        [EdmScalarPropertyAttribute(EntityKeyProperty=false, IsNullable=false)]
        [DataMemberAttribute()]
        public global::System.String Name
        {
            get
            {
                return _Name;
            }
            set
            {
                OnNameChanging(value);
                ReportPropertyChanging("Name");
                _Name = StructuralObject.SetValidValue(value, false);
                ReportPropertyChanged("Name");
                OnNameChanged();
            }
        }
        private global::System.String _Name;
        partial void OnNameChanging(global::System.String value);
        partial void OnNameChanged();
    
        /// <summary>
        /// 没有元数据文档可用。
        /// </summary>
        [EdmScalarPropertyAttribute(EntityKeyProperty=false, IsNullable=true)]
        [DataMemberAttribute()]
        public global::System.String ParentId
        {
            get
            {
                return _ParentId;
            }
            set
            {
                OnParentIdChanging(value);
                ReportPropertyChanging("ParentId");
                _ParentId = StructuralObject.SetValidValue(value, true);
                ReportPropertyChanged("ParentId");
                OnParentIdChanged();
            }
        }
        private global::System.String _ParentId;
        partial void OnParentIdChanging(global::System.String value);
        partial void OnParentIdChanged();
    
        /// <summary>
        /// 没有元数据文档可用。
        /// </summary>
        [EdmScalarPropertyAttribute(EntityKeyProperty=false, IsNullable=true)]
        [DataMemberAttribute()]
        public global::System.String Url
        {
            get
            {
                return _Url;
            }
            set
            {
                OnUrlChanging(value);
                ReportPropertyChanging("Url");
                _Url = StructuralObject.SetValidValue(value, true);
                ReportPropertyChanged("Url");
                OnUrlChanged();
            }
        }
        private global::System.String _Url;
        partial void OnUrlChanging(global::System.String value);
        partial void OnUrlChanged();
    
        /// <summary>
        /// 没有元数据文档可用。
        /// </summary>
        [EdmScalarPropertyAttribute(EntityKeyProperty=false, IsNullable=true)]
        [DataMemberAttribute()]
        public global::System.String Iconic
        {
            get
            {
                return _Iconic;
            }
            set
            {
                OnIconicChanging(value);
                ReportPropertyChanging("Iconic");
                _Iconic = StructuralObject.SetValidValue(value, true);
                ReportPropertyChanged("Iconic");
                OnIconicChanged();
            }
        }
        private global::System.String _Iconic;
        partial void OnIconicChanging(global::System.String value);
        partial void OnIconicChanged();
    
        /// <summary>
        /// 没有元数据文档可用。
        /// </summary>
        [EdmScalarPropertyAttribute(EntityKeyProperty=false, IsNullable=true)]
        [DataMemberAttribute()]
        public Nullable<global::System.Int32> Sort
        {
            get
            {
                return _Sort;
            }
            set
            {
                OnSortChanging(value);
                ReportPropertyChanging("Sort");
                _Sort = StructuralObject.SetValidValue(value);
                ReportPropertyChanged("Sort");
                OnSortChanged();
            }
        }
        private Nullable<global::System.Int32> _Sort;
        partial void OnSortChanging(Nullable<global::System.Int32> value);
        partial void OnSortChanged();
    
        /// <summary>
        /// 没有元数据文档可用。
        /// </summary>
        [EdmScalarPropertyAttribute(EntityKeyProperty=false, IsNullable=true)]
        [DataMemberAttribute()]
        public global::System.String Remark
        {
            get
            {
                return _Remark;
            }
            set
            {
                OnRemarkChanging(value);
                ReportPropertyChanging("Remark");
                _Remark = StructuralObject.SetValidValue(value, true);
                ReportPropertyChanged("Remark");
                OnRemarkChanged();
            }
        }
        private global::System.String _Remark;
        partial void OnRemarkChanging(global::System.String value);
        partial void OnRemarkChanged();
    
        /// <summary>
        /// 没有元数据文档可用。
        /// </summary>
        [EdmScalarPropertyAttribute(EntityKeyProperty=false, IsNullable=true)]
        [DataMemberAttribute()]
        public global::System.String State
        {
            get
            {
                return _State;
            }
            set
            {
                OnStateChanging(value);
                ReportPropertyChanging("State");
                _State = StructuralObject.SetValidValue(value, true);
                ReportPropertyChanged("State");
                OnStateChanged();
            }
        }
        private global::System.String _State;
        partial void OnStateChanging(global::System.String value);
        partial void OnStateChanged();
    
        /// <summary>
        /// 没有元数据文档可用。
        /// </summary>
        [EdmScalarPropertyAttribute(EntityKeyProperty=false, IsNullable=true)]
        [DataMemberAttribute()]
        public global::System.String CreatePerson
        {
            get
            {
                return _CreatePerson;
            }
            set
            {
                OnCreatePersonChanging(value);
                ReportPropertyChanging("CreatePerson");
                _CreatePerson = StructuralObject.SetValidValue(value, true);
                ReportPropertyChanged("CreatePerson");
                OnCreatePersonChanged();
            }
        }
        private global::System.String _CreatePerson;
        partial void OnCreatePersonChanging(global::System.String value);
        partial void OnCreatePersonChanged();
    
        /// <summary>
        /// 没有元数据文档可用。
        /// </summary>
        [EdmScalarPropertyAttribute(EntityKeyProperty=false, IsNullable=true)]
        [DataMemberAttribute()]
        public Nullable<global::System.DateTime> CreateTime
        {
            get
            {
                return _CreateTime;
            }
            set
            {
                OnCreateTimeChanging(value);
                ReportPropertyChanging("CreateTime");
                _CreateTime = StructuralObject.SetValidValue(value);
                ReportPropertyChanged("CreateTime");
                OnCreateTimeChanged();
            }
        }
        private Nullable<global::System.DateTime> _CreateTime;
        partial void OnCreateTimeChanging(Nullable<global::System.DateTime> value);
        partial void OnCreateTimeChanged();
    
        /// <summary>
        /// 没有元数据文档可用。
        /// </summary>
        [EdmScalarPropertyAttribute(EntityKeyProperty=false, IsNullable=true)]
        [DataMemberAttribute()]
        public Nullable<global::System.DateTime> UpdateTime
        {
            get
            {
                return _UpdateTime;
            }
            set
            {
                OnUpdateTimeChanging(value);
                ReportPropertyChanging("UpdateTime");
                _UpdateTime = StructuralObject.SetValidValue(value);
                ReportPropertyChanged("UpdateTime");
                OnUpdateTimeChanged();
            }
        }
        private Nullable<global::System.DateTime> _UpdateTime;
        partial void OnUpdateTimeChanging(Nullable<global::System.DateTime> value);
        partial void OnUpdateTimeChanged();
    
        /// <summary>
        /// 没有元数据文档可用。
        /// </summary>
        [EdmScalarPropertyAttribute(EntityKeyProperty=false, IsNullable=true)]
        [DataMemberAttribute()]
        public global::System.String UpdatePerson
        {
            get
            {
                return _UpdatePerson;
            }
            set
            {
                OnUpdatePersonChanging(value);
                ReportPropertyChanging("UpdatePerson");
                _UpdatePerson = StructuralObject.SetValidValue(value, true);
                ReportPropertyChanged("UpdatePerson");
                OnUpdatePersonChanged();
            }
        }
        private global::System.String _UpdatePerson;
        partial void OnUpdatePersonChanging(global::System.String value);
        partial void OnUpdatePersonChanged();
    
        /// <summary>
        /// 没有元数据文档可用。
        /// </summary>
        [EdmScalarPropertyAttribute(EntityKeyProperty=false, IsNullable=true)]
        [DataMemberAttribute()]
        public global::System.String IsLeaf
        {
            get
            {
                return _IsLeaf;
            }
            set
            {
                OnIsLeafChanging(value);
                ReportPropertyChanging("IsLeaf");
                _IsLeaf = StructuralObject.SetValidValue(value, true);
                ReportPropertyChanged("IsLeaf");
                OnIsLeafChanged();
            }
        }
        private global::System.String _IsLeaf;
        partial void OnIsLeafChanging(global::System.String value);
        partial void OnIsLeafChanged();

        #endregion
    
        #region 导航属性
    
        /// <summary>
        /// 没有元数据文档可用。
        /// </summary>
        [XmlIgnoreAttribute()]
        [SoapIgnoreAttribute()]
        [DataMemberAttribute()]
        [EdmRelationshipNavigationPropertyAttribute("SysModel", "FK_SYSMENU_REFERENCE_SYSMENU", "SysMenu1")]
        public EntityCollection<SysMenu> SysMenu1
        {
            get
            {
                return ((IEntityWithRelationships)this).RelationshipManager.GetRelatedCollection<SysMenu>("SysModel.FK_SYSMENU_REFERENCE_SYSMENU", "SysMenu1");
            }
            set
            {
                if ((value != null))
                {
                    ((IEntityWithRelationships)this).RelationshipManager.InitializeRelatedCollection<SysMenu>("SysModel.FK_SYSMENU_REFERENCE_SYSMENU", "SysMenu1", value);
                }
            }
        }
    
        /// <summary>
        /// 没有元数据文档可用。
        /// </summary>
        [XmlIgnoreAttribute()]
        [SoapIgnoreAttribute()]
        [DataMemberAttribute()]
        [EdmRelationshipNavigationPropertyAttribute("SysModel", "FK_SYSMENU_REFERENCE_SYSMENU", "SysMenu")]
        public SysMenu SysMenu2
        {
            get
            {
                return ((IEntityWithRelationships)this).RelationshipManager.GetRelatedReference<SysMenu>("SysModel.FK_SYSMENU_REFERENCE_SYSMENU", "SysMenu").Value;
            }
            set
            {
                ((IEntityWithRelationships)this).RelationshipManager.GetRelatedReference<SysMenu>("SysModel.FK_SYSMENU_REFERENCE_SYSMENU", "SysMenu").Value = value;
            }
        }
        /// <summary>
        /// 没有元数据文档可用。
        /// </summary>
        [BrowsableAttribute(false)]
        [DataMemberAttribute()]
        public EntityReference<SysMenu> SysMenu2Reference
        {
            get
            {
                return ((IEntityWithRelationships)this).RelationshipManager.GetRelatedReference<SysMenu>("SysModel.FK_SYSMENU_REFERENCE_SYSMENU", "SysMenu");
            }
            set
            {
                if ((value != null))
                {
                    ((IEntityWithRelationships)this).RelationshipManager.InitializeRelatedReference<SysMenu>("SysModel.FK_SYSMENU_REFERENCE_SYSMENU", "SysMenu", value);
                }
            }
        }
    
        /// <summary>
        /// 没有元数据文档可用。
        /// </summary>
        [XmlIgnoreAttribute()]
        [SoapIgnoreAttribute()]
        [DataMemberAttribute()]
        [EdmRelationshipNavigationPropertyAttribute("SysModel", "FK_SYSMENUS_REFERENCE_SYSMENU2", "SysMenuSysRoleSysOperation")]
        public EntityCollection<SysMenuSysRoleSysOperation> SysMenuSysRoleSysOperation
        {
            get
            {
                return ((IEntityWithRelationships)this).RelationshipManager.GetRelatedCollection<SysMenuSysRoleSysOperation>("SysModel.FK_SYSMENUS_REFERENCE_SYSMENU2", "SysMenuSysRoleSysOperation");
            }
            set
            {
                if ((value != null))
                {
                    ((IEntityWithRelationships)this).RelationshipManager.InitializeRelatedCollection<SysMenuSysRoleSysOperation>("SysModel.FK_SYSMENUS_REFERENCE_SYSMENU2", "SysMenuSysRoleSysOperation", value);
                }
            }
        }
    
        /// <summary>
        /// 没有元数据文档可用。
        /// </summary>
        [XmlIgnoreAttribute()]
        [SoapIgnoreAttribute()]
        [DataMemberAttribute()]
        [EdmRelationshipNavigationPropertyAttribute("SysModel", "SysMenuSysOperation", "SysOperation")]
        public EntityCollection<SysOperation> SysOperation
        {
            get
            {
                return ((IEntityWithRelationships)this).RelationshipManager.GetRelatedCollection<SysOperation>("SysModel.SysMenuSysOperation", "SysOperation");
            }
            set
            {
                if ((value != null))
                {
                    ((IEntityWithRelationships)this).RelationshipManager.InitializeRelatedCollection<SysOperation>("SysModel.SysMenuSysOperation", "SysOperation", value);
                }
            }
        }

        #endregion
    }

Model数据格范:

 public class SysMenuMetadata
    {
			[ScaffoldColumn(false)]
			[Display(Name = "主键", Order = 1)]
			public object Id { get; set; }

			[ScaffoldColumn(true)]
			[Display(Name = "名称", Order = 2)]
			[Required(ErrorMessage = "不能为空")]
			[StringLength(200, ErrorMessage = "长度不可超过200")]
			public object Name { get; set; }

			[ScaffoldColumn(true)]
			[Display(Name = "父模块", Order = 3)]
			[StringLength(36, ErrorMessage = "长度不可超过36")]
			public object ParentId { get; set; }

			[ScaffoldColumn(true)]
			[Display(Name = "网址", Order = 4)]
			[StringLength(200, ErrorMessage = "长度不可超过200")]
			public object Url { get; set; }

			[ScaffoldColumn(true)]
			[Display(Name = "图标", Order = 5)]
			[StringLength(200, ErrorMessage = "长度不可超过200")]
			public object Iconic { get; set; }

			[ScaffoldColumn(true)]
			[Display(Name = "排序", Order = 6)]
			[Range(0,2147483646, ErrorMessage="数值超出范围")]
			public int? Sort { get; set; }

			[ScaffoldColumn(true)]
			[Display(Name = "备注", Order = 7)]
			[StringLength(4000, ErrorMessage = "长度不可超过4000")]
			public object Remark { get; set; }

			[ScaffoldColumn(true)]
			[Display(Name = "状态", Order = 8)]
			[StringLength(200, ErrorMessage = "长度不可超过200")]
			public object State { get; set; }

			[ScaffoldColumn(true)]
			[Display(Name = "创建人", Order = 9)]
			[StringLength(200, ErrorMessage = "长度不可超过200")]
			public object CreatePerson { get; set; }

			[ScaffoldColumn(true)]
			[Display(Name = "创建时间", Order = 10)]
			[DataType(DataType.DateTime,ErrorMessage="时间格式不正确")]
			public DateTime? CreateTime { get; set; }

			[ScaffoldColumn(true)]
			[Display(Name = "编辑时间", Order = 11)]
			[DataType(DataType.DateTime,ErrorMessage="时间格式不正确")]
			public DateTime? UpdateTime { get; set; }

			[ScaffoldColumn(true)]
			[Display(Name = "编辑人", Order = 12)]
			[StringLength(200, ErrorMessage = "长度不可超过200")]
			public object UpdatePerson { get; set; }


    }

 约束反射关联:

[MetadataType(typeof(SysMenuMetadata))]//使用SysMenuMetadata对SysMenu进行数据验证
    public partial class SysMenu : IBaseEntity
    {
      
        #region 自定义属性,即由数据实体扩展的实体
        
        [Display(Name = "父模块")]
        public string ParentIdOld { get; set; }
        
        [Display(Name = "操作")]
        public string SysOperationId { get; set; }
        [Display(Name = "操作")]
        public string SysOperationIdOld { get; set; }
        
        #endregion

    }

 备注:IBaseEntity为后续扩展准备,

 public interface IBaseEntity
    {
        //string Id { get; }
    }

 

转载于:https://www.cnblogs.com/xmyy/articles/3222106.html

课程通过实际项目融入常用开发技术架构,讲授风格独特,提供详细上课日志及答疑,赠送配套的项目架构源码注释详细清晰且表达通俗,均能直接在实际项目中应用,正真的物超所值,价格实惠任务作业:综合运用《C#/.Net企业级系统架构设计实战精讲教程》课程所学知识技能设计一个学生成绩管理系统的架构。要求:1.系统基于MVC的三架构,各单独建不同的解决方案文件夹。2.采用Model First开发方式,设计架构时只需要设计学生表(TbStudent)和课程表(TbCourse)。学生表必须有的字段是ID、stuName、age;课程表必须有的字段是ID、courseName、content。3.数据访问采用Entity Framework或NHibernate来实现,必须封装对上述表的增删改查方法。4.必须依赖接口编程,也就是必须要有数据访问的接口、业务逻辑的接口等接口之间必须减少依赖,可以通过简单工厂或抽象工厂。5.至少采用简单工厂、抽象工厂、Spring.Net等技术中的2种来减少之间的依赖等。6.封装出DbSession类,让它拥有所有Dal实例和SaveChanges方法。7.设计出数据访问及业务逻辑主要类的T4模板,以便实体增加时自动生成相应的类。8.表现要设计相关的控制器和视图来验证设计的系统架构代码的正确性,必须含有验证增删改查的方法。9.开发平台一定要是Visual Studio平台,采用C#开发语言,数据库为SQL Server。10.提交整个系统架构的源文件及生成的数据库文件。(注意: 作业需写在CSDN博客中,请把作业链接贴在评论区,老师会定期逐个批改~~)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值