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; } }