views:

73

answers:

1

I´m trying out entity framework included in VS2010 but ´ve hit a problem with my database/model generated from the graphical interface.

When I do:

user = dataset.UserSet.CreateObject();
user.Id = Guid.NewGuid();
dataset.UserSet.AddObject(user);
dataset.SaveChanges();

{"Cannot insert the value NULL into column 'Id', table 'BarSoc2.dbo.UserSet'; column does not allow nulls. INSERT fails.\r\nThe statement has been terminated."}

The table i´m inserting into looks like so:

-- Creating table 'UserSet'
CREATE TABLE [dbo].[UserSet] (
    [Id] uniqueidentifier  NOT NULL,
    [Name] nvarchar(max)  NOT NULL,
    [Username] nvarchar(max)  NOT NULL,
    [Password] nvarchar(max)  NOT NULL
);
GO

-- Creating primary key on [Id] in table 'UserSet'
ALTER TABLE [dbo].[UserSet]
ADD CONSTRAINT [PK_UserSet]
    PRIMARY KEY CLUSTERED ([Id] ASC);
GO

Am I creating the object in the wrong way or doing something else basic wrong?

+1  A: 

You shouldn't have to set the ID property manually. It should be set automatically when you save. I assume you are using the standard template for Entity Framework, and not the Self-tracking entities template or POCOs template. If so, something along the following lines would seem more appropriate:

User user = new User();
dataset.AddToUsers(user);
dataset.SaveChanges();

James Foster
Thanks, it worked perfectly. Apperently something goes very wrong when you set the id yourself. AddToUsers is deprecated though.
Richard