首页 新闻 会员 周边 捐助

EntityFramework6 添加 与修改 过滤 null字段问题

0
[待解决问题]

如题,

如何避免 在用EF的时候,自动过滤 实体类 为null的字段, 在生成SQL的时候不生成这个字段。

 public class User
    {
        public string Name { get; set; }

        public DateTime? AddDate { get; set; }

        public int? Fid { get; set; }
    }

再实体已经允许为null,
那么如何让EF ,在添加 跟修改的时候,自动过滤掉这些 null的字段。
比如说。
生成 INSERT INTO USER (Name) VALUES('') 这样的T-SQL

修改生成
UPDATE USER SET Name='' WHERE ... 这样的 语句,
就是如果该实体类的属性是null的情况下 统统过滤掉不生成在T-SQL语句里面
崩溃的油条的主页 崩溃的油条 | 菜鸟二级 | 园豆:204
提问于:2017-10-31 14:11
< >
分享
所有回答(3)
0

如何提问才能让人明白你想问啥。

如题

爱编程的大叔 | 园豆:30844 (高人七级) | 2017-10-31 14:18

比如有一个视图 User

 public class User
    {
        public string Name { get; set; }

        public DateTime? AddDate { get; set; }

        public int? Fid { get; set; }
    }

再实体已经允许为null,
那么如何让EF ,在添加 跟修改的时候,自动过滤掉这些 null的字段。
比如说。
生成 INSERT INTO USER (Name) VALUES('') 这样的T-SQL

修改生成
UPDATE USER SET Name='' WHERE ... 这样的 语句,
就是如果该实体类是null的情况下 统统过滤掉不生成在T-SQL语句里面

 

 

支持(0) 反对(0) 崩溃的油条 | 园豆:204 (菜鸟二级) | 2017-10-31 14:23

@崩溃的油条:

1、需求很奇葩。

2、你想给NULL的时候咋办?

3、真想做这个功能也不是不能,想办法拦截EF生成的SQL语句呗。

4、回过头来,还是劝你一句,这是歧途,别走下去。

支持(0) 反对(0) 爱编程的大叔 | 园豆:30844 (高人七级) | 2017-10-31 14:27

@爱编程的大叔: 

不是。有这个需求。如果表有一个字段。只能在添加的时候操作一次,比如添加时间,之后是不允许操作的。

或者如果过滤掉这个问题,那有没有类似自己写的特性来屏蔽它。比如说在添加的时候过滤它。在修改的是过滤它。甚至 添加修改的时候都可以过滤它

支持(0) 反对(0) 崩溃的油条 | 园豆:204 (菜鸟二级) | 2017-10-31 14:31

@崩溃的油条: 你不修改那个字段,就不会有问题的。多事要过滤。

 

再说了,添加时间这种字段,可以配置在DataCotext里面全自动设置的,哪里需要你去设置一次。

支持(0) 反对(0) 爱编程的大叔 | 园豆:30844 (高人七级) | 2017-10-31 15:22
0

将属性的默认值设置为null试试

public class User
    {
        public string Name { get; set; }
        public DateTime? AddDate { get; set; } = null
        public int? Fid { get; set; } = null
    }
dudu | 园豆:29568 (高人七级) | 2017-10-31 15:11
0

意思就是实体为null的字段在更新和插入时不管这个字段?

吴瑞祥 | 园豆:29449 (高人七级) | 2017-10-31 15:31

是的

支持(0) 反对(0) 崩溃的油条 | 园豆:204 (菜鸟二级) | 2017-10-31 15:31

@崩溃的油条: 这种需求是你自己想出来的.

这种需求的名字叫:ef 部分列更新. 百度这个关键字就可以了.

至于插入.都是新字段.你不插入null他就不是null了吗..

支持(0) 反对(0) 吴瑞祥 | 园豆:29449 (高人七级) | 2017-10-31 15:34
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册