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

标签 c# .net sql-server

假设我有一个 SQL Server 数据库,在其他表中,有一个名为 Mail 的表,它具有与之关联的预期收件人、发件人、邮件正文等,其中之一是 Priority 属性,它基本上指示邮件的发送优先级是高、正常还是低。因为我只会使用这些少量的值(如果要添加更多的值就不会那么多),我决定将 Priority 设为 tinyint 类型,而在我的代码中我'd 代表的是 enum 类型。

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

mail.Priority = (MailPriority)(byte)row["Priority"];

并用于插入:

parameter = new SqlParameter("@Priority", SqlDbType.TinyInt);
parameter.Value = (byte)mail.Priority;
statement.Parameters.Add(parameter);

(Where 语句是一个 SQLCommand)。

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

最佳答案

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

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

关于c# - SQL Server - 将 tinyint 与枚举一起使用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22868136/

相关文章:

sql - 将 5 gig 文件导入表时出错

c# - Azure函数: HttpRequestMessage does not contain a definition for 'CreateResponse'

C#:如何从资源文件加载游标?

c# - 隐藏 gridview 中最后一行的按钮

c# - 在 PowerPoint 中的文本框中查找动画的开始/结束字符索引

sql - MS SQL 如何用单个值更新多行?

c# - 尝试在 gridview 上更新/取消时无法加载 View 状态?

c# - 将现有对象添加到列表

c# - 退出按钮以关闭 C# 中的 Windows 窗体窗体

sql - 更新触发器如何删除旧记录