Linq to sql linq到sql在我的邮政编码字段上创建十进制类型,应该是int(我猜)
在sql server数据库中,我有一个类型为“numeric”的字段。数据库中的精度设置为18 当我创建linq to sql类时,它显示为:Linq to sql linq到sql在我的邮政编码字段上创建十进制类型,应该是int(我猜),linq-to-sql,Linq To Sql,在sql server数据库中,我有一个类型为“numeric”的字段。数据库中的精度设置为18 当我创建linq to sql类时,它显示为: [Column(Storage="_zip", DbType="Decimal(18,0)")] public System.Nullable<decimal> zip { [Column(Storage=“\u-zip”,DbType=“Decimal(18,0)”)] 公共系统.可为空的zip { 问题是:
[Column(Storage="_zip", DbType="Decimal(18,0)")]
public System.Nullable<decimal> zip
{
[Column(Storage=“\u-zip”,DbType=“Decimal(18,0)”)]
公共系统.可为空的zip
{
问题是:
有什么建议吗?这正是应该的。“数字”和“十进制”是相同的*在SQL Server中-SQL-92标准规定它们在功能上应该相同(这是因为在SQL-92之前,不同的供应商对同一事物使用不同的名称。支持所有名称保留向后兼容性).NET只有一个十进制类型(因为它不是SQL,所以不需要支持数字别名,尽管您可以创建一个) 至于邮政编码,数字(18,0)听起来不是很好。对于常规的5位邮政编码来说,它太大,CPU占用太多(数字/十进制以10为基数存储,需要更多的处理能力),而且它不能正确地存储较长的带破折号的邮政编码+4
由于邮政编码只是碰巧是数字的地址(目前大多数情况下),我建议您使用varchar(10)字段,该字段将正确存储所有邮政编码,包括ZIP+4(5位邮政编码加上破折号加上4位分机码)。如果我将该字段更改为varchar(10),我在SQL server enterprise manager中收到一个错误,表示必须删除并重新创建该表。您对无法重新创建的表进行了更改,或者启用了该选项以防止保存需要重新创建表的更改