2010-11-08 64 views
0

我试图使用LINQ插入一行到表不工作,并表的ID列具有识别规格:标识规范Linq中

CREATE TABLE [dbo].[Event](
    [ID] [int] IDENTITY(36,1) NOT NULL, 
    [Description] [nvarchar](100) NOT NULL, 
    [OccurredDateTime] [datetime] NULL, 
CONSTRAINT [PK_Event] PRIMARY KEY CLUSTERED 
(
    [ID] ASC 
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY] 
) ON [PRIMARY] 

我有身份的规范占在我的Visual Studio项目的DBML文件中:

[Table(Name="dbo.Event")] 
public partial class Event : INotifyPropertyChanging, INotifyPropertyChanged 
{ 
    /* ... */ 
    [Column(Storage="_ID", AutoSync=AutoSync.OnInsert, DbType="Int NOT NULL IDENTITY", IsPrimaryKey=true, IsDbGenerated=true)] 
    public int ID 
    { 
    /* ... */ 
    } 

    /* ... */ 
} 

怎么回事?当我尝试插入这样的:

Data.Event myEvent = new Data.Event(); 

myEvent.Description = summaryText; 
db.Events.InsertOnSubmit(myEvent);      
db.SubmitChanges(); 

以下异常被抛出:

SQLEXCEPTION:无法插入值 NULL插入列 'ID',表 'redacted.dbo.Event' ;列不会 允许空值。 INSERT失败。 声明已被终止

回答

0

我试过这个设置 - 对我来说就像一个魅力。我可以插入一个新的Event对象 - 完全没有问题 - 我确实立即取回新ID ...

您确定您的数据库和型号是否同步?表格可能不是真的用INT IDENTITY创建的?

+0

我想我在连接字符串中指定了错误的数据库。仍然试图让我的测试设置来验证... – 2010-11-09 19:45:03