Tôi muốn lưu trữ các tập lệnh .sql dài trong giải pháp của mình và thực thi chúng theo chương trình. Tôi đã tìm ra cách thực hiện một chuỗi chứa kịch bản sql của mình nhưng tôi đã không tìm ra cách đọc chuỗi từ một tệp sẽ được lưu trữ trong giải pháp (ví dụ dưới thư mục con/Scripts).Thực thi tập lệnh SQL được lưu trữ dưới dạng tài nguyên
Trả lời
Đầu tiên, hãy chỉnh sửa thuộc tính của tệp .sql để nó sẽ được nhúng dưới dạng tài nguyên.
Sau đó, sử dụng mã tương tự như sau để lấy kịch bản:
string commandText;
Assembly thisAssembly = Assembly.GetExecutingAssembly();
using (Stream s = thisAssembly.GetManifestResourceStream(
"{project default namespace}.{path in project}.{filename}.sql"))
{
using (StreamReader sr = new StreamReader(s))
{
commandText = sr.ReadToEnd();
}
}
@Will - Trong dự án SQL CLR dường như không có cách nào để thêm tệp tài nguyên được nhập mạnh mẽ. – jpierson
@Các tài nguyên cũng là một giải pháp kém, imho. Dường như không có cách nào để sửa đổi các nhận xét XML được tạo ra và tóm tắt như * Tìm kiếm một chuỗi được bản địa hóa tương tự như tạo bảng dbo.Foo (... * rất khó sử dụng. – Stijn
Thêm các tập tin SQL để dự án của bạn sau đó tạo ra một file resource mới. Mở tệp SQL và chọn 'Tệp' từ trình đơn thả xuống trên cùng bên trái (mặc định là Chuỗi). Sau đó nhấn thêm tài nguyên và điều hướng đến/chọn tệp SQL. Điều này cho phép bạn để có được SQL từ tập tin tài nguyên mà không làm mất kiểu an toàn của bạn như sau:
Trên đây là quá trình trong Visual Studio 2010. Tôi cũng đã viết về vấn đề này trên my blog.
Biết đây là một bài cũ. rất gọn gàng, nhưng làm thế nào để bạn đi về việc thêm các tham số cho kịch bản? – zmaster
Bạn sẽ có thể sử dụng 'string.Format' cho việc này. –
Thêm vào resrouces và đặt tệp thành Tài nguyên, trong mã viết NAMESPACE.Properties.Resources .ScriptDB.ToString() –
Add file để Tài, và thiết lập tập tin để Resource, trong mã viết:
String SQLCommand = NAMESPACE.Properties.Resources.ScriptDB.ToString()
Sử dụng QueryFirst. Bạn đặt sql của bạn trong mẫu .sql do công cụ cung cấp. Phía sau hậu trường, QueryFirst biên dịch nó dưới dạng tài nguyên và kết nối cuộc gọi để truy xuất nó khi chạy. Bạn chỉ cần lo lắng về việc gọi Execute() trên lớp trình bao bọc được tạo ra và kết quả của bạn có thể truy cập được thông qua các POCO được tạo ra. Kết thúc an toàn loại kết thúc. Không bao giờ phải nhớ một tên cột hoặc datatype, cộng với những lợi thế đáng kể của việc có sql của bạn, nơi thần dự định ... trong một tập tin .sql.
từ chối trách nhiệm: Tôi đã viết QueryFirst
- 1. Thực thi mã được lưu trữ dưới dạng danh sách
- 2. Làm cách nào để thực thi một tệp thực thi được nhúng dưới dạng tài nguyên
- 3. clojure: giải nén tệp zip được lưu trữ dưới dạng tài nguyên
- 4. Thực thi một Proc Oracle lưu trữ như Một tài
- 5. Thực thi câu lệnh SQL động được lưu trữ trong một cột của một bảng
- 6. Tài nguyên từ tập hợp dưới dạng luồng
- 7. SQL Server - dừng hoặc ngắt thực thi tập lệnh SQL
- 8. Thực thi tập lệnh SQL từ dòng lệnh
- 9. Tài nguyên Java dưới dạng tệp
- 10. Thực thi gói Python đã cài đặt dưới dạng tập lệnh?
- 11. Thủ tục lưu trữ T-SQL có thực thi 'nguyên tử' không?
- 12. Lưu trữ thư mục dưới dạng biến để sử dụng sau này trong tập lệnh linux
- 13. Làm cách nào để thực thi thủ tục được lưu trữ trong tác vụ SQL Agent?
- 14. Phát tệp MP3 được lưu trữ dưới dạng blob
- 15. MongoDB: Lỗi thực thi được lưu trữ hàm JavaScript
- 16. Tệp cấu hình dưới dạng tài nguyên được nhúng
- 17. thủ tục lưu trữ t-sql tạo tập lệnh
- 18. Thực thi tập lệnh SQL để tạo bảng và hàng
- 19. Cách thực thi tập lệnh .sql từ bash
- 20. SQL * Plus không thực thi các tập lệnh SQL mà Nhà phát triển SQL thực hiện
- 21. TSQL - cách thực thi truy vấn dưới dạng biến?
- 22. Làm cách nào để thực thi mã Perl được lưu trữ bên trong biến tập lệnh shell?
- 23. Định dạng IPv6 dưới dạng int trong C# và lưu trữ nó trong SQL Server
- 24. Khởi chạy tập lệnh dưới dạng root thông qua ADB
- 25. Làm thế nào để lưu trữ tài liệu Word dưới dạng BLOB trong mySQL với Coldfusion
- 26. Thực thi tập lệnh php trước mỗi tập lệnh php?
- 27. Tôi muốn ẩn tập lệnh của một thủ tục được lưu trữ trong SQL Server 2008
- 28. Crontab không thực thi được tập lệnh Python
- 29. Thực thi tập lệnh ruby từ cron
- 30. Dừng thực thi tập lệnh Ruby
Có một câu trả lời cũng tin chi tiết về nguồn nhúng trong một câu hỏi trùng lặp https://stackoverflow.com/questions/23301964/ef-6-code-first-with-custom-stored -procedure/39673550 # 39673550 –