Sql server 使用F在SQL Server中存储序列化信息#

Sql server 使用F在SQL Server中存储序列化信息#,sql-server,serialization,f#,Sql Server,Serialization,F#,我目前正在F#的一个项目中工作,该项目从Excel电子表格中获取数据,确定它是否与SQL Server中的现有表兼容,然后将相关行添加到现有表中 我正在处理的一些数据比T-SQL提供的类型更具体。也就是说,T-SQL有一个类型“date”,但我需要区分在每个月初或月末的日期集。同样的逻辑也适用于许多其他类型。如果我有以下类型: Date(Beginning) Date(End) 在添加到表中之前,它们都将转换为T-SQL类型“date”,因此会删除一些更具体的信息 为了解决这个问题,我在F#中

我目前正在F#的一个项目中工作,该项目从Excel电子表格中获取数据,确定它是否与SQL Server中的现有表兼容,然后将相关行添加到现有表中

我正在处理的一些数据比T-SQL提供的类型更具体。也就是说,T-SQL有一个类型“date”,但我需要区分在每个月初或月末的日期集。同样的逻辑也适用于许多其他类型。如果我有以下类型:

Date(Beginning)
Date(End)
在添加到表中之前,它们都将转换为T-SQL类型“date”,因此会删除一些更具体的信息


为了解决这个问题,我在F#中保存了一个序列化类型的日志,以及它们应用于SQL Server表中的列号。我的问题是:是否有任何方法将此日志存储在SQL Server内部的某个位置,以便我可以访问它,并在进行新插入之前将传入数据的序列化类型与表中已经存在的数据的序列化类型进行比较

是的,如果您愿意,可以这样做。

将元数据保留在数据库之外并手动维护它们会使数据库的管理变得“昂贵”,而且还会增加发生错误的风险,直到发生不好的事情时才可能检测到错误

如果您可以控制表模式,那么至少有两个简单的选项。例如,可以添加存储类型信息的列。对于像您所描述的只有几个可能值的简单操作,只需添加一个新列来存储实际的类型值。更新F#代码,将源反序列化为单独的日期和类型(开始/结束)值,然后将这些值插入表中。简单,易于维护,易于消费

您还可以为每个日期子类型创建一个用户定义的类型,但这可能会让另一个DBA/dev混淆,并且在从应用程序检索数据时会变得更加复杂。这通常不是一个好方法