假设我有一个 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/