我收到了这个错误,我对导致它的原因非常有信心,但不太确定如何解决它。
我正在使用entity framework code first
并且我在我的一个实体中有一个外键,我故意将其设置为long?
:
public long? ClientId { get; set; }
public virtual Client Client { get; set; }
然后我使用我创建的数据库中的数据来填充 a DataGridView
,问题就来了。我正在通过元素使用自定义搜索/过滤,dgv
并且继承了此自定义过滤的代码。到目前为止它工作得很好,但是当我尝试过滤时,ClientID
我得到了帖子名称的错误。
我开始调试并看到了这个:
if (property.PropertyType == typeof(string))
{//some code
else if (property.PropertyType == typeof(bool))
{//other code
else if(rule.Data.Equals("1") || rule.Data.ToLower().Equals("true"))
{//again some code
else if (property.PropertyType == typeof(Int32))
{//some code
...
而且因为我的值是类型long?
,所以我没有进入下面的条件,所以我的代码输入了默认条件,即:
else
{
long value = 0;
if (long.TryParse(rule.Data, out value))
{..code
根据调试器,解析返回 true,因为我进入if
正文,但随后我从上面收到错误,并且 me 属性的类型是System.Nullable1[System.Int64]
.
我有第二个外键,它使用完全相同的逻辑,一切对他来说都很好。我能看到的唯一区别是,对于工作情况,类型是long
,对于错误情况,类型是long?
。
我想保留该类型long?
,但不知道这种情况是否有任何解决方法。