每个表 都有创建时间 修改时间 创建人 修改人 ,不想每次新增 修改 数据的时候 手动给这些属性赋值,求个思路 新增操作的时候 就自动给创建时间赋值,以前看到有人 在 CreateTime 属性上加上自定义特性 可以做到 ,但是不知道具体方法。求方法或思路
经过实验,可以解决你的问题。
答案如下,需要写两个触发器。
create trigger updateTime on [EFDemo].[dbo].[PlanType] for insert as declare @pk int, @time datetime = getdate(); begin select @pk= TypeID from inserted; update [PlanType] set CreateDate=@time where TypeID=@pk; end; go create trigger updateTime2 on PlanType for update as declare @pk int, @time datetime = getdate(); begin select @pk=TypeID from deleted; update PlanType set UpdateDate=@time where TypeID=@pk; end go
触发器不是理想的实现方式,但是非常感谢你的回答。
CREATE TABLE [PlanType] ( TypeID int identity (1, 1) NOT NULL, TypeName nvarchar(512) NULL, Active bit default 1 NOT NULL, CreateDate datetime NOT NULL default (GETDATE()), UpdateDate datetime NULL PRIMARY KEY (TypeID) )
你是指上面这样?
你这个是在 数据库 CreateDate 加了默认值啊 updateDate 没用啊 我想在程序编码阶段控制
看你是怎么操作数据库的.要是有数据库访问框架在上面做支持就可以了.创建时间只要在构造函数里赋值为Datetime.Now就可以了.更新时间会复杂一点,要在数据库访问框架的更新方法里处理.或者做属性拦截.当前实体里的其它属性发生变化时.为更新时间赋值.总的来说通过实体类就能实现了.
是的 就想通过实体类 以前公司的框架 是给 实体类 上的属性 加了 自定义特性实现的。可惜我没研究。
写个触发器 也可以啊 可以随便添加你想要的值
能具体点吗 朋友,是数据库触发器吗?
@请求: 恩 你在数据库创建好触发器,比如说你更新一张表的时候触发器会对你绑定的表和字段就行自动修改,创建好触发器 你只需要对表的简单的操作,别的表和字段就会根据你的要求进行自动添加或修改!
@李德志: 那这个触发器 是建立 一个 对所有表都起作用吗 ? 要是一个表要对应一个触发器那不是累死?
@请求: 就一个就可以了,看的是根据那个表为主要操作的操作然后触发其他表就行
c#6.0语法糖:
private datetime? _createDate; public datetime CreateDate{get{return _createDate;} set{_createDate = value;}}=datetime.Now;
是的 这个方法 能设置 创建时间 修改时间呢
@请求: 使用vs2015或之后的版本才能支持该语法
@请求:
private DateTime? create; public DateTime? Create { get {
create = create??DateTime.Now; return create } set { create = value; } }
这个可以兼容旧版...去掉问号
@jojoka: 修改时间 可以自动赋值吗? 有解决思路?
@请求: 不是照葫芦画瓢吗?