我正在用C#编写一个使用Entity Framework连接到SQL Server的应用程序。该应用程序的每个实例都共享表和一些变量(整数,字符串和布尔值)。
通过SQL Server中的表共享变量(int字符串和布尔变量)的最佳方法是什么?
由于表具有固定的类型列,因此一个表在不丢失C#类型安全的情况下是不会做到的,因为每种类型都应转换为字符串或装箱成对象。
我想出的两个解决方案是,一个包含3列的表(int
,varchar
,bool
),将数据写入适当类型的列或3个表中一栏。
或者也许我完全不了解这里的要点。
问题将是:完成将键入的数据保存到SQL Server的最优雅的方法是什么?
答案 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