Bỏ qua để đến nội dung

Dọn dữ liệu

Dữ liệu của test này không được rò sang test sau. Gọi CleanAsync() ở đầu test:

await harness.CleanAsync();

Trong class DbTestBase, harness chính là Harness.

CleanAsync() làm trống mọi user table, bất kể foreign key giữa chúng, và đưa mọi cột identity về giá trị seed. Dòng kế tiếp nhận cùng một id trên mọi engine.

Cơ chế khác nhau theo engine:

Table không có foreign key nào trỏ tới sẽ được truncate. Việc đó làm trống table và đặt identity về đúng seed đã khai báo, bất kể kiểu cột.

SQL Server từ chối truncate table đang bị foreign key tham chiếu, kể cả khi key đã bị disable. Các table đó được làm trống bằng DELETE trong lúc mọi constraint bị disable, rồi constraint được enable lại WITH CHECK để optimizer vẫn tin tưởng chúng. Sau đó identity của chúng được reseed.

  • Nó không đụng đến hình dạng của object. Đó là việc của shape guard (bộ canh hình dạng schema).
  • Nó cũng làm trống reference data mà seed script đã chèn. Hãy seed lại sau khi dọn. Với database project của SQL Server, xem hướng dẫn dacpac để biết sample làm việc này thế nào.