在SQL Server中存储程序状态变量的最佳方法

时间:2019-05-14 23:45:43

标签: c# sql-server

我正在用C#编写一个使用Entity Framework连接到SQL Server的应用程序。该应用程序的每个实例都共享表和一些变量(整数,字符串和布尔值)。

通过SQL Server中的表共享变量(int字符串和布尔变量)的最佳方法是什么?

由于表具有固定的类型列,因此一个表在不丢失C#类型安全的情况下是不会做到的,因为每种类型都应转换为字符串或装箱成对象。

我想出的两个解决方案是,一个包含3列的表(intvarcharbool),将数据写入适当类型的列或3个表中一栏。

或者也许我完全不了解这里的要点。

问题将是:完成将键入的数据保存到SQL Server的最优雅的方法是什么?

1 个答案:

答案 0 :(得分:0)

您可以为此目的使用SQL_Variant

https://docs.microsoft.com/en-us/sql/t-sql/data-types/sql-variant-transact-sql?view=sql-server-2017

CREATE   TABLE tableA(colA sql_variant, colB int)  
INSERT INTO tableA values ( cast (46279.1 as decimal(8,2)), 1689)  
SELECT   SQL_VARIANT_PROPERTY(colA,'BaseType') AS 'Base Type',  
         SQL_VARIANT_PROPERTY(colA,'Precision') AS 'Precision',  
         SQL_VARIANT_PROPERTY(colA,'Scale') AS 'Scale'  
FROM      tableA  
WHERE      colB = 1689