Linq的整型或实体类null引发的报错问题

经常在程序中遇到两个空值报错问题;

问题1:int类型如果为不可空,假如传进去null,会报错

问题2:EF的获得单个实体的Model如果为空,那么后面如果跟上属性会报错

解决问题1:

一般属性都设为可空

再自己封装一个 Toint方法,如果对象为null,则转换为0(或者使用.net类库自带的方法GetValueOrDefault())

解决问题2

下图为获得单个实体的方法,需要传入不为空的整形

在调用时可 areaapp.GetForm(id.ToInt())

解决调用空实体实体后检索里面属性报错的方法:

1.可空类型修饰符(?)

2、空合并运算符(??)

用于定义可空类型和引用类型的默认值。如果此运算符的左操作数不为null,则此运算符将返回左操作数,否则返回右操作数。
       例如:a ?? b 当a为null时则返回b,a不为null时则返回a本身。

判断实体是否为空,如果为空再实例出一个新的实体

原文地址:https://www.cnblogs.com/clsl/p/11606885.html

时间: 2024-10-18 05:55:35

Linq的整型或实体类null引发的报错问题的相关文章

mysql 插入not null 没有default报错(doesn't have a default value)

今天遇到一个问题,本身在本地数据执行插入sql没啥毛病,但上了测试环境就报错!找个许久发现和mysql的配置有关.查看本地数据库 select @@sql_mode 为空,测试环境执行发现: +---------------------+| @@sql_mode          |+---------------------+| STRICT_TRANS_TABLES |+---------------------+ 这种模式下相当于给sql加入了数据,语法的校验,如果有设置not null

LINQ to SQL 建立实体类

使用LINQ to SQL时,需要首先建立用于映射数据库对象的模型,也就是实体类.在运行时,LINQ to SQL 根据LINQ表达式或查询运算符生成SQL语句,发送到数据库进行操作.数据库返回后,LINQ to SQL负责将结果转换成实体类对象. 建立实体类的方法有很多,例如LINQ to SQL设计器,手动编码建立,使用XML文件映射,使用命令行工具SqlMetal生成等.其中最方便的就是LINQ to SQL设计器. 1.使用LINQ to SQL设计器建立实体类 在一个示例用的Demo控

LINQ to SQL 建立实体类 (转)

http://www.cnblogs.com/DebugLZQ/archive/2012/11/14/2770449.html 使用LINQ to SQL时,需要首先建立用于映射数据库对象的模型,也就是实体类.在运行时,LINQ to SQL 根据LINQ表达式或查询运算符生成SQL语句,发送到数据库进行操作.数据库返回后,LINQ to SQL负责将结果转换成实体类对象. 建立实体类的方法有很多,例如LINQ to SQL设计器,手动编码建立,使用XML文件映射,使用命令行工具SqlMetal

CreateMutex 创建一个有名字的互斥量的时候hMutex=CreateMutex(NULL,TRUE,"tickets")报错

编译器报错: 不能将参数 3 从“const char [8]”转换为“LPCWSTR”,怎么改成LPCWSTR类型 更改方法: hMutex=CreateMutex(NULL,TRUE,L"tickets") 只需要在第三个参数,即名字前面加一个大写的 L 即可 HANDLE CreateMutex( LPSECURITY_ATTRIBUTES          lpMutexAttributes, // 指向安全属性的指针 BOOL                         

c++ 调用pthread_create函数时,传入类中的成员报错。解决方法。

1.问题出现 我想把我的c程序转成c++的方式写,因为我觉得c++的面向对象方式特别的好用. 然后我开始移植了,当我想把在一个类函数中调用pthread_create来创建一个类. 我给的参数是 s=pthread_create(&id,NULL,run,NULL); //函数原型 void * THREAD_433::run(void *arg) { void * ret; using namespace std; cout<<"hello!\r\n"; retu

linux下启动dbca或netmgr类的图形界面报错解决

Xlib: connection to ":0.0" refused by server Xlib: No protocol specified …… 解决办法:  www.2cto.com exit 退到root用户下执行下面代码 Java代码 xhost local:oracle non-network local connections being added to access control list 屏幕会出现如下内容: www.2cto.com Java代码 non-ne

.net winform 调用类中的webbrowser 报错:当前线程不在单线程单元中,因此无法实例化 ActiveX

遇到这个恶心的问题纠缠得不要不要的,大家遇到了的话希望不要走弯路,经过这个折腾让我有点怀疑人生了.哈哈哈 解决代码如下: //创建新线程专门用于跑子窗 Thread thd = new Thread(new ParameterizedThreadStart(ShowNotify)); thd.SetApartmentState(ApartmentState.STA);//关键设置 thd.IsBackground = true; thd.Start(); Thread.CurrentThread

linq中日期格式转换或者比较,程序报错说不支持方法的解决办法

public void TestMethod1(){using (var _context = new hotelEntities()){var rq = DateTime.Now.Date;var query = from q in _context.UV_RZJL_RZRY_Singlewhere SqlFunctions.DateDiff("day",rq,q.LDRQ)>0select q;Assert.Inconclusive(query.Count().ToStrin

关于mysql下hibernate实体类字段与数据库关键字冲突的问题

好久没写了,都忘记博客了,趁着现在还在公司,写的东西是经过验证的,不是在家凭记忆力写的,正确率有保障,就说说最近遇到的一件事情吧. 以前一直用的oracle数据库,这次项目我负责的模块所在的系统是用的mysql数据库,结果当初建表时候,字段什么的全靠百度,实在是英语不行,然后有个字段叫usage,是mysql数据库的关键字,当时自己测试时候就发现了,但是想着我只是sql语句,加下``,一样可以用,所以就没引起重视. 结果一期已经上线了,现在对这个表要进行其他的维护,才发现用hibernate直接