Sqlserver
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Sqlserver

Làm cách nào để buộc khung thực thể chèn các cột nhận dạng?

EF 6 , sử dụng bài viết msdn:

using (var dataContext = new DataModelContainer())
using (var transaction = dataContext.Database.BeginTransaction())
{
    var user = new User()
    {
        ID = id,
        Name = "John"
    };

    dataContext.Database.ExecuteSqlCommand("SET IDENTITY_INSERT [dbo].[User] ON");

    dataContext.User.Add(user);
    dataContext.SaveChanges();

    dataContext.Database.ExecuteSqlCommand("SET IDENTITY_INSERT [dbo].[User] OFF");

    transaction.Commit();
}

Cập nhật: Để tránh lỗi "Giá trị rõ ràng phải được chỉ định cho cột nhận dạng trong bảng 'TableName' khi IDENTITY_INSERT được đặt thành BẬT hoặc khi người dùng sao chép đang chèn vào cột nhận dạng NOT FOR REPLICATION", bạn nên thay đổi giá trị của StoreGeneratedPattern thuộc tính của cột danh tính từ Danh tính thành Không có trong trình thiết kế mô hình.

Lưu ý, việc thay đổi StoreGeneratedPattern thành Không sẽ không chèn được đối tượng không có id chỉ định (theo cách thông thường) với lỗi "Không thể chèn giá trị rõ ràng cho cột nhận dạng trong bảng 'TableName' khi IDENTITY_INSERT được đặt thành TẮT".



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. datetime2 so với datetimeoffset trong SQL Server:Sự khác biệt là gì?

  2. Ngày xây dựng từ năm và số tuần trong MSSQL

  3. Gọi một thủ tục được lưu trữ với tham số trong c #

  4. SQLException:Dữ liệu chuỗi hoặc nhị phân sẽ bị cắt bớt

  5. SQL Chọn sinh nhật sắp tới