首页 新闻 搜索 专区 学院

c# 每个表都有 创建时间 修改时间 想自动赋值 求思路

0
[已解决问题] 解决于 2016-03-09 17:47

         每个表 都有创建时间 修改时间 创建人 修改人 ,不想每次新增 修改 数据的时候 手动给这些属性赋值,求个思路 新增操作的时候 就自动给创建时间赋值,以前看到有人 在 CreateTime 属性上加上自定义特性 可以做到 ,但是不知道具体方法。求方法或思路

请求的主页 请求 | 初学一级 | 园豆:2
提问于:2016-03-08 11:53
< >
分享
最佳答案
0

经过实验,可以解决你的问题。

答案如下,需要写两个触发器。

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

 

奖励园豆:5
龙葛格 | 小虾三级 |园豆:712 | 2016-03-09 17:34

触发器不是理想的实现方式,但是非常感谢你的回答。

请求 | 园豆:2 (初学一级) | 2016-03-09 17:47
其他回答(4)
0
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)
)

你是指上面这样?

MrNice | 园豆:3023 (老鸟四级) | 2016-03-08 12:27

你这个是在 数据库 CreateDate 加了默认值啊   updateDate 没用啊  我想在程序编码阶段控制

支持(0) 反对(0) 请求 | 园豆:2 (初学一级) | 2016-03-08 12:44
0

看你是怎么操作数据库的.要是有数据库访问框架在上面做支持就可以了.创建时间只要在构造函数里赋值为Datetime.Now就可以了.更新时间会复杂一点,要在数据库访问框架的更新方法里处理.或者做属性拦截.当前实体里的其它属性发生变化时.为更新时间赋值.总的来说通过实体类就能实现了.

吴瑞祥 | 园豆:28851 (高人七级) | 2016-03-08 12:36

是的 就想通过实体类  以前公司的框架 是给 实体类 上的属性 加了 自定义特性实现的。可惜我没研究。

支持(0) 反对(0) 请求 | 园豆:2 (初学一级) | 2016-03-08 13:06
0

写个触发器  也可以啊   可以随便添加你想要的值

!雨后的天! | 园豆:239 (菜鸟二级) | 2016-03-08 15:59

能具体点吗 朋友,是数据库触发器吗?

支持(0) 反对(0) 请求 | 园豆:2 (初学一级) | 2016-03-08 16:14

@请求: 恩   你在数据库创建好触发器,比如说你更新一张表的时候触发器会对你绑定的表和字段就行自动修改,创建好触发器 你只需要对表的简单的操作,别的表和字段就会根据你的要求进行自动添加或修改!

支持(0) 反对(0) !雨后的天! | 园豆:239 (菜鸟二级) | 2016-03-08 16:20

@李德志: 那这个触发器  是建立 一个  对所有表都起作用吗 ? 要是一个表要对应一个触发器那不是累死?

支持(0) 反对(0) 请求 | 园豆:2 (初学一级) | 2016-03-08 16:29

@请求: 就一个就可以了,看的是根据那个表为主要操作的操作然后触发其他表就行

支持(0) 反对(0) !雨后的天! | 园豆:239 (菜鸟二级) | 2016-03-08 16:31
0

c#6.0语法糖:

private datetime? _createDate;

public datetime CreateDate{get{return _createDate;} set{_createDate = value;}}=datetime.Now;

 

不会Redis | 园豆:670 (小虾三级) | 2016-03-09 11:56

是的 这个方法 能设置 创建时间  修改时间呢

支持(0) 反对(0) 请求 | 园豆:2 (初学一级) | 2016-03-09 12:04

@请求: 使用vs2015或之后的版本才能支持该语法

支持(0) 反对(0) 不会Redis | 园豆:670 (小虾三级) | 2016-03-09 13:33

@请求: 

        private DateTime? create;
        public DateTime? Create
        {
            get
            {
         create = create??DateTime.Now;
return create } set { create = value; } }

这个可以兼容旧版...去掉问号

支持(0) 反对(0) 不会Redis | 园豆:670 (小虾三级) | 2016-03-09 13:56

@jojoka: 修改时间 可以自动赋值吗? 有解决思路?

支持(0) 反对(0) 请求 | 园豆:2 (初学一级) | 2016-03-09 14:12

@请求: 不是照葫芦画瓢吗?

支持(0) 反对(0) 不会Redis | 园豆:670 (小虾三级) | 2016-03-09 16:14
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册