MVC4 - 无法通过具有递增ID的模型插入SQL行

时间:2012-10-04 03:04:41

标签: sql asp.net-mvc asp.net-mvc-4 sql-server-ce

使用MVC4,我在将新行插入数据库时​​遇到了一些麻烦(SQL Compact)。我正在从原始文本(制表符分隔)构建行,如下所示:

                while (reader.Peek() != -1)
            {
                newRow = Cos.Create();
                line = reader.ReadLine().Split('\t');
                for (int i = 0; i < header.Count(); i++)
                {
                    switch (header[i])
                    {
                        case "CompanyName":
                            newRow.CompanyName = line[i];
                            break;
                        case "City":
                            newRow.City = line[i];
                            break;
                        case "Country":
                            newRow.Country = line[i];
                            break;
                        default:
                            return "A column was found with an unacceptable value - " + header[i] + " - No changes have been made.";
                    }
                }
                this.Cos.Add(newRow);
            }
        this.SaveChanges();

我的表有一个Id列,设置为:int,Unique,Primary Key和Identity(seed:1,increment:1)。问题是SQL拒绝“this.SaveChanges()”生成的语句,因为我生成的所有行的Id值都是0。

我有办法让SQL在插入时为每一行分配一个唯一的ID吗?我的理解就是这种方式的身份。

我的模型看起来像这样:

public class CoDB{
        public string CompanyName { get; set; }
        public string City { get; set; }
        public string Country { get; set; }
        public int Id { get; set; }
}

CoDBContext定义:

public DbSet<CoDB> Cos {get; set;}

非常感谢您的帮助! -Zach

1 个答案:

答案 0 :(得分:0)

听起来像是在尝试设置自动标识字段的值,您不应该这样做。看看这是否有帮助:Autonumber with Entity Framework