-
Notifications
You must be signed in to change notification settings - Fork 303
Inserting and updating data
You will notice that there are multiple ways to achieve the same thing here. Which you choose to use are up to you, but I recommend that you try and be consistent within your project. My preferred approach is to ensure that my referential integrity is properly configured, and then let Simple.Data's discovery handle more stuff for me.
Simple.Data:
db.Users.Insert(Name: "steve", Age: 50)
SQL:
INSERT INTO Users (Name, Age) values (@p0, @p1)
Simple.Data:
dynamic person = new ExpandoObject(); person.Name = "steve"; person.Age = 50; db.Users.Insert(person);
SQL:
INSERT INTO [Users] ([Name], [Age]) values (@p0,@p1)
If you have an IDENTITY column defined on your table, then the Insert methods will all return a copy of the record fetched from the database, so all defaulted values are set. In 0.4, support for other ways of fetching the inserted row will be added.
Simple.Data:
db.Users.UpdateById(Id: 1, Name: "Dave", Age: 49)
SQL:
UPDATE [Users] SET [Name] = @p1, [Age] = @p2 WHERE [Users].[Id] = @p3
If the table has a Primary Key defined, you can just call Update and pass in a dynamic or statically-typed data object:
Simple.Data:
var user = db.Users.FindById(1); user.Name = "Dave"; user.Age = 49; db.Users.Update(user);
SQL:
UPDATE [Users] SET [Name] = @p1, [Age] = @p2 WHERE [Users].[Id] = @p3
If there is no Primary Key defined on the table, you can use UpdateBy to tell Simple.Data which columns to use as criteria:
Simple.Data:
User user = db.Users.FindById(1); user.Name = "Dave"; user.Age = 49; db.Users.UpdateById(user);
SQL:
UPDATE [Users] SET [Name] = @p1, [Age] = @p2 WHERE [Users].[Id] = @p3