Чтобы добавить новый объект в базу данных, необходимо вызвать у таблицы в контексте данных метод InsertOnSubmit() или InsertAllOnSubmit()(если надо добавить список объектов).
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 |
string connectionString = @"Data Source=.\SQLEXPRESS;Initial Catalog=usersdb;Integrated Security=True"; DataContext db = new DataContext(connectionString); Console.WriteLine("До добавления"); foreach (var user in db.GetTable<User>().OrderByDescending(u=>u.Id).Take(5)) { Console.WriteLine("{0} \t{1} \t{2}", user.Id, user.FirstName, user.Age); } Console.WriteLine(); // создаем нового пользователя User user1 = new User { FirstName = "Ronald", Age = 34 }; // добавляем его в таблицу Users db.GetTable<User>().InsertOnSubmit(user1); db.SubmitChanges(); Console.WriteLine(); Console.WriteLine("После добавления"); foreach (var user in db.GetTable<User>().OrderByDescending(u => u.Id).Take(5)) { Console.WriteLine("{0} \t{1} \t{2}", user.Id, user.FirstName, user.Age); } |
При добавлении генерируется следующее sql-выражение:
1 2 3 4 5 6 7 8 9 10 |
INSERT INTO [Users]([Name], [Age]) VALUES (@p0, @p1) SELECT CONVERT(Int,SCOPE_IDENTITY()) AS [value] @p0 nvarchar(4000), @p1 int p0='Ronald', @p1=34 |
Причем данное выражение возвращает id добавленной записи, поэтому после добавления у объекта User мы сможем получить Id:
1 2 3 4 5 |
User user1 = new User { FirstName = "Ronald", Age = 34 }; db.GetTable<User>().InsertOnSubmit(user1); db.SubmitChanges(); Console.WriteLine(user1.Id); |
Здесь важно отметить, что если в базе данных значение какого-либо столбца, например, столбца для Id, должно генерироваться автоматически, то в классе модели атрибут Colunm над соответствующим свойством должен иметь значение IsDbGenerated = true
:
1 2 |
[Column(IsPrimaryKey = true, IsDbGenerated = true)] public int Id { get; set; } |