Breeze不更新可为空的日期时间字段

Breeze不更新可为空的日期时间字段,breeze,Breeze,我正在服务器上设置一个可为空的datetime字段,但该字段没有在我的数据库中更新 private bool BeforeSaveLeaseEntry(Lease leaseEntry, EntityInfo info) { if (info.EntityState == EntityState.Added) { leaseEntry.CreatedDate = DateTime.UtcNow.ToLocalTime

我正在服务器上设置一个可为空的datetime字段,但该字段没有在我的数据库中更新

        private bool BeforeSaveLeaseEntry(Lease leaseEntry, EntityInfo info)
    {
        if (info.EntityState == EntityState.Added)
        {
            leaseEntry.CreatedDate = DateTime.UtcNow.ToLocalTime();
        }
        if (info.EntityState == EntityState.Modified)
        {
            leaseEntry.LastUpdatedDate = DateTime.UtcNow.ToLocalTime();
        }
        return true;
    }
CreatedDate不可为null,已更新。 LastUpdateDate可为Null且从不更新

代码被命中,但当我在我的SQL server上运行跟踪程序时,该字段从未包含在更新代码中

exec sp_executesql N'update [dbo].[Leases]
set [ContractNo] = @0
where ([LeaseID] = @1)
',N'@0 varchar(25),@1 int',@0='test6',@1=27415

对此很抱歉,在Breeze v 1.1.3中,我们添加了一个EntityInfo.ForceUpdate布尔属性,但它从未包含在主Breeze文档中,它只出现在发行说明中

当对现有实体的任何属性进行服务器端修改时,此属性可用于强制整个实体的服务器端更新。另一种可能使用的方法是显式更新EntityInfo.OriginalValuesMap

这两种方法背后的思想是,在更新时,Breeze只为那些已更改的se属性创建更新语句。由于Breeze的跟踪机制在“originalValuesMap”中添加了一个条目,因此会自动检测到任何客户端更改,但对于服务器端更改,无法自动执行此操作,因为服务器端实体未检测到执行有关属性更改的通知


“EntityInfo.ForceUpdate”方法强制为实体上的每个属性生成update语句,而直接更新EntityInfo.OriginalValuesMap只会更新映射中找到的那些属性

在客户机上设置虚拟值会强制更新,这是推荐的方法吗?CreatedDate在数据库中设置了一个默认值,所以我猜这就是为什么我不需要该字段的虚拟日期。当我第一次保存实体时,它会显示正确的时间(使用data bind=“text:dateCreated”),但当我刷新页面时,时间会按我的时区偏移量移动。数据库值不会更改,但会根据创建vs load的情况显示不同的值。