实体框架不返回null
本文关键字:null 返回 框架 实体 | 更新日期: 2023-09-27 18:24:23
我有点困惑。如果我的查询没有返回任何内容,为什么优惠券不是空的?我应该如何检查null?
Coupon coupon;
using (var db = new KupongEntities())
{
coupon = (from p in db.Coupon
where p.CouponID == 123
select p).SingleOrDefault();
}
if (coupon != null)
{
//test
}
如果我的查询没有返回任何内容,为什么优惠券不是空的?
你的问题有点令人困惑。你是说,尽管你认为不应该有结果,但你正在执行那个查询,却没有得到null
值吗?然后发生了三件事之一:
- 你错了,没有结果
- 没有结果是对的,但返回的值不是
null
是错的 Coupon
是一个结构体
我会给你怀疑的好处,并假设1。和2。事实并非如此。在最后一种情况下,coupon
将接收Coupon
实例的默认值。结构的默认值是将结构的所有字段都设置为默认值的值。在这种情况下,你应该说
if(coupon != default(Coupon)) {
}
但是,您会遇到一个严重的问题,Coupon
的默认实例可能是数据库中的一个有效条目。如果我是你的话,我会重新考虑把Coupon
作为一个结构。
我应该如何检查null?
好吧,如果Coupon
是一个引用类型,那么你所拥有的就是好的。如果Coupon
是一个结构,您应该像上面显示的那样进行检查。