Добавление в LINQ to SQL

Данное руководство устарело. Актуальное руководство: по ADO.NET и работе с базами данных в .NET 6

Последнее обновление: 31.10.2015

Чтобы добавить новый объект в базу данных, необходимо вызвать у таблицы в контексте данных метод InsertOnSubmit() или InsertAllOnSubmit()(если надо добавить список объектов).

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);
}
Добавление в LINQ to SQL

При добавлении генерируется следующее sql-выражение:

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:

User user1 = new User { FirstName = "Ronald", Age = 34 };
db.GetTable<User>().InsertOnSubmit(user1);
db.SubmitChanges();

Console.WriteLine(user1.Id);

Здесь важно отметить, что если в базе данных значение какого-либо столбца, например, столбца для Id, должно генерироваться автоматически, то в классе модели атрибут Colunm над соответствующим свойством должен иметь значение IsDbGenerated = true:

[Column(IsPrimaryKey = true, IsDbGenerated = true)]
public int Id { get; set; }
Помощь сайту
Юмани:
410011174743222
Перевод на карту
Номер карты:
4048415020898850