Trong quá khứ, tôi đã tránh ORM và luôn luôn truy vấn thủ công tham số hóa vv Điều này rất tốn thời gian và một nỗi đau thực sự khi lần đầu tiên phát triển một ứng dụng. Gần đây tôi quyết định có một cái nhìn khác về ORM đặc biệt là Sqlite.NET ORM.Làm thế nào để bạn chạy một loạt câu lệnh SQL bằng cách sử dụng SQLite.NET PCL
Tôi muốn sử dụng các tính năng ORM của SQLite nhưng cũng có thể chạy một loạt các lệnh SQL nguyên gốc để chuẩn bị sẵn một cơ sở dữ liệu.
Chúng tôi đang sử dụng SqliteNetExtensions-MvvmCross dll để cho phép các mối quan hệ một-nhiều-v.v ... và tất cả đều ổn. Các vấn đề của tôi xuất hiện khi tôi muốn tạo cơ sở dữ liệu với dữ liệu cấu hình. Tôi đã hy vọng chỉ đơn giản là cung cấp một tập tin sql có chứa một loạt các báo cáo sql rằng nó sẽ chạy cái khác.
Tôi đã lấy mã SQlite.NET từ GITHub và chạy thử nghiệm. Tôi đã sau đó mở rộng các lớp StringQueryTests mà có một đơn giản [sản phẩm] bảng để làm như sau: -
[Test]
public void AlanTest()
{
StringBuilder sb = new StringBuilder(200);
sb.Append(" DELETE FROM Product;");
sb.Append(" INSERT INTO Product VALUES (1,\"Name1\",1,1);");
sb.Append(" INSERT INTO Product VALUES (2,\"Name2\",2,3);");
db.Execute(sb.ToString());
}
Khi tôi chạy này nó không ném ra một lỗi và trong thực tế hành vi có vẻ là rằng nó sẽ chỉ chạy lệnh đầu tiên. Nếu tôi dán nội dung của sb.ToString() vào cửa sổ truy vấn cơ sở dữ liệu sqlite, nó sẽ hoạt động tốt.
Đây có phải là hành vi mong đợi không? Nếu vậy, làm thế nào để tôi đi về việc khắc phục điều này để tôi có thể sử dụng một cách tiếp cận như trên. Tôi không thực sự muốn tạo các đối tượng để quản lý tất cả các câu lệnh SQL nếu có thể.
Tôi có thể thấy rằng có một số cách tiếp cận có thể được áp dụng để khắc phục sự cố này - bất kỳ ai có công việc xung quanh hoặc đề xuất họ nghĩ có thể giải quyết vấn đề này?
Trân trọng
Alan.
[Báo cáo lỗi không hoạt động] (https: // github.com/oysteinkrog/SQLite.Net-PCL/issues/362) –