我一直在寻找和尝试不同的事情,但我可以完成最基本的事情。
我有一个自定义对象,它有几个可以为空的属性。 问题是,当此属性已有数据时,它不会设置为null。 为简单起见,本文简化了代码。
此方法接受传递的数据以修改数据库中的记录。因此,在我创建订阅对象的行中,我使用参数来知道它是新记录还是我正在修改现有记录。 当我想修改现有的一个时,它会在数据库中查找记录,并返回使用数据库中的数据填充的对象。然后我用新数据覆盖对象属性并再次保存。 它发生的是,如果我想覆盖包含属性FechaAlta的数据的现有记录,并将此日期设置为null,则对象属性FechaData将不会设置为null。 希望它足够清楚。
public string ProcessSubscription(string cRMID, string suscripID, DateTime? fechaAlta = null)
{
Subscription subscription = null;
....
subscription = new Suscription(modify)
....
subscription.CRMID = cRMID;
subscription.SuscripID = suscripID;
subscription.FechaAlta = fechaAlta;
....
return _update.UpdateEntity(subscription);
}
这是调试器在该行之后显示的内容。我试图将其设置为null以用于测试目的 。 Image from the debugger
答案 0 :(得分:0)
你的问题有点缺乏。但是从我收集的内容中,你想在满足某些条件时将fechaAlta设置为null?如果是这种情况,您的函数甚至不会尝试将fechaAlta设置为null。我只看到你将fechaAlta设置为一个可选参数',这意味着如果在调用ProcessSubscription()时没有指定fechaAlta,那么它只会为null。但是,如果在调用ProcessSubscription()时指定了fechaAlta,则它永远不会为null,因为您没有将其设置为null。
如果你调用它,并且dateTime不为null,它将永远不会为null:
ProcessSubscription("string1","string2", dateTime);
如果您调用它,它将只为null:
ProcessSubscription("string1","string2");
或
ProcessSubscription("string1","string2", null);
你需要:
subscription.FechaAlta = null;
...或
fechaAlta = null;
...在你的功能中的某个地方。
函数中将逻辑设置为null的逻辑在哪里?
答案 1 :(得分:0)
我发现了问题。这是类属性的set方法中的代码问题。 我只在值!= null时才设置属性。我真傻 谢谢大家。