Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/291.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/22.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# SQL Server-将tinyint与枚举一起使用_C#_.net_Sql Server - Fatal编程技术网

C# SQL Server-将tinyint与枚举一起使用

C# SQL Server-将tinyint与枚举一起使用,c#,.net,sql-server,C#,.net,Sql Server,假设我有一个SQL Server数据库,其中有一个名为Mail的表,该表包含预期的收件人、发件人、邮件正文等。其中一个是属性Priority,它基本上指示邮件的发送优先级是高、正常还是低。由于我将只使用这些少量的值(如果添加更多的值,则不会太多),因此我决定将优先级设置为tinyint类型,而在我的代码中,我表示的是enum类型 我的问题是,调用数据库时插入和检索此属性的正确方法是什么?在检索的情况下(使用数据行),我有: 以及插入: parameter = new SqlParameter("

假设我有一个SQL Server数据库,其中有一个名为
Mail
的表,该表包含预期的收件人、发件人、邮件正文等。其中一个是属性
Priority
,它基本上指示邮件的发送优先级是高、正常还是低。由于我将只使用这些少量的值(如果添加更多的值,则不会太多),因此我决定将优先级设置为
tinyint
类型,而在我的代码中,我表示的是
enum
类型

我的问题是,调用数据库时插入和检索此属性的正确方法是什么?在检索的情况下(使用
数据行
),我有:

以及插入:

parameter = new SqlParameter("@Priority", SqlDbType.TinyInt);
parameter.Value = (byte)mail.Priority;
statement.Parameters.Add(parameter);
(其中语句是
SQLCommand


那么这会起作用吗?这是正确的方法吗?我认为使用
tinyint
可以,因为可能的值不会太多,但我不知道
int
是否合适,性能是否更好,或者更常用,等等。

性能和空间不一样。
从性能角度来看,实际上.NET可以更快地访问Int32。
在SQL中可以节省空间。
您还应该将枚举定义为字节

public enum enumSVMV : byte { SV = 0, MV = 1, none = 2 };

将枚举定义为字节会有区别吗?为什么不希望枚举与SQL保持一致?这很公平。但是,在检索和插入的情况下,我是否必须更改代码?我认为这是正确的,因为你没有提到。找到答案的方法是测试。您不必将枚举更改为字节。Dummy测试似乎工作正常。既然您告诉我在SQL中将枚举类型定义为字节和节省空间(我不知道),我就将此标记为答案。谢谢你。
public enum enumSVMV : byte { SV = 0, MV = 1, none = 2 };