对mvc中使用ef框架 更改t4实现继承和去属性

本文介绍了一种在C#中实现ORM框架的方法,通过让所有model类继承BaseModel来统一实现ID属性的处理,并利用特性实现类的扩展属性。此外,还展示了如何通过代码模板去除不需要的ID字段。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

让T 能有id 实现委托

必须让所有model类都继承于BaseModel和T的应用类型是BaseModel( public class BaseDAL : IBaseDAL where T : BaseModel )

1.修改表头t4模板 .tt

1>.让其他model类去掉id属性

public string Property(EdmProperty edmProperty) 
 {
 if(_code.Escape(edmProperty)=="ID")//查找ID然后过滤掉 
 { 
 return ""; 
 }

2>.让所有model类继承BaseModel

public string EntityClassOpening(EntityType entity) 
 { 
    return string.Format( CultureInfo.InvariantCulture, "{0} {1}partial class {2}{3}:BaseModel", //加上basemodel 
    Accessibility.ForType(entity),
    _code.SpaceAfter(_code.AbstractOption(entity)), 
    _code.Escape(entity), 
   _code.StringBefore(" : ", _typeMapper.GetTypeName(entity.BaseType))); 
 }

用特性让类具有拓展类共同的特性

[MetadataType(typeof(MenuExtend))]//RoleExtend和Role特性共享 
 public partial class Menu { } 
 public class MenuExtend { 
 [Required(ErrorMessage = "*角色名不可为空")] 
 [StringLength(8, ErrorMessage = "*长度不可大于6位数")] 
 public string Name { get; set; }
 [Required(ErrorMessage = "*类型不可为空")] 
 public Nullable<int> Type { get; set; } 
 [JsonIgnore]
 public virtual ICollection<RoleMenu> RoleMenu { get; set; } 
 [JsonIgnore] 
 public virtual ICollection<Menu> Menu1 { get; set; } 
 [JsonIgnore] 
 public virtual Menu Menu2 { get; set; } }
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值