Có vẻ như những người khác đang đặt câu hỏi tương tự trên Microsoft Developer Forums.
Dưới đây là những gì tôi đã tìm thấy:
According to Tim Heuer:
... Bạn không thể trực tiếp có một db SQL nhúng trong ứng dụng của bạn hoặc sử dụng cái gì đó như ADO.NET. Đây là cơ sở hạ tầng không đồng bộ/dịch vụ . Vì vậy, nếu dữ liệu của bạn đã được hiển thị thông qua dịch vụ, sau đó là khóa học bạn có thể kết nối theo cách đó. Có một số phương pháp khác có trọng lượng nhẹ mà bạn có thể sử dụng để lưu trữ cục bộ cũng như sử dụng những thứ như không gian tên Windows.Storage (tương tự như Bộ nhớ riêng trong .NET).
Morten Nielsen agrees:
Bạn có thể sử dụng HttpClient để tải khá nhiều bất cứ điều gì từ web. Tại sao bạn không định cấu hình dịch vụ WCF của mình để trả về dữ liệu dưới dạng JSON và sử dụng DataContractJsonSerializer để deserialize kết quả?
Ngoài ra, Tim Heuer cautions:
... Xin vui lòng lưu ý rằng trong khi tuyệt vời, các dự án SQLWinRT trên CodePlex là một wrapper để giao tiếp với động cơ SQLite cổ điển ... trong đó sử dụng API mà có không vượt qua xác thực cửa hàng hiện tại.
Generic Object Storage Helper for WinRT và WinRTFile Based Database dường như có một số lời hứa.
Nhưng Daniel Stolt raises some good points:
Đó là tuyệt vời mà có hỗ trợ tốt cho việc xây dựng khách hàng OData và khách hàng REST của khác - nhưng chỉ có địa chỉ này kịch bản trực tuyến. Phần "có cấu trúc" của Windows.Storage là một mô hình rất hạn chế, về cơ bản giới hạn đối với các cặp tên/giá trị, không đủ cho tất cả trừ các trường hợp cơ bản nhất là . Có, lưu trữ tệp cục bộ, tuyệt vời là tất cả . Nhưng buộc mọi nhà phát triển ứng dụng phải xây dựng DBMS của riêng mình trên bộ nhớ tệp cục bộ sẽ không cắt nó, đặc biệt là với tất cả System.Data đã bị xóa khỏi hồ sơ. Nếu bộ nhớ tệp cục bộ đủ cho hầu hết các ứng dụng thiết bị, thì những thứ như SQLCE sẽ không có mục đích nào ngày hôm nay. Và SQLCE rõ ràng có mục đích và đã đóng một vai trò rất quan trọng đối với đôi khi các ứng dụng thiết bị được kết nối trong một thời gian rất dài. Ngoài ra còn có một nhu cầu rất lớn đối với việc đồng bộ hóa với một cơ sở dữ liệu phía máy chủ chẳng hạn như SQL Azure, chủ yếu để có thể chuyển dữ liệu giữa các thiết bị. Có, có mô hình lưu trữ chuyển vùng trong WinRT, nhưng nó có cùng giới hạn bộ nhớ cục bộ được đề cập ở trên và trên hết là rất hạn chế về dung lượng (hiện tại là 30KB nếu bộ nhớ phục vụ). Nó chỉ đơn giản là không đủ cho tất cả nhưng dữ liệu chuyển vùng đơn giản nhất cần. Một lần nữa, buộc mọi nhà phát triển ứng dụng phải thiết kế và triển khai giải pháp đồng bộ hóa của riêng mình là rất xấu. Bạn có thể làm tốt hơn để kích hoạt các nhà phát triển .
Nhiều người thất vọng vì không gian tên System.Data không được hỗ trợ trong WinRT.
Richard Bethell said:
Tôi thậm chí không có lời cho việc này. Điều này thật đáng kinh ngạc.Để một bên cho thời điểm chúng muốn buộc bạn trừu tượng hóa phần mềm trung gian cho kết nối cơ sở dữ liệu - Tôi không đồng ý, nhưng tôi có thể hiểu một lý do hợp lý cho điều đó. Tôi thậm chí có thể thấy con đường phát triển như thế.
Nhưng không có System.Data .... ở tất cả? Bạn thậm chí có hiểu những gì bạn đã thực hiện cho chúng tôi?
gì System.Data thể làm được, bên ngoài chỉ có các nhà cung cấp cho Sql, OleDb và các nhà cung cấp tùy chỉnh khác như Oracle, là cung cấp một trừu tượng phong phú của bộ dữ liệu XML cho phép bạn rất nhanh chóng xây dựng một dữ liệu theo định hướng hướng dịch vụ Kiến trúc. Ví dụ, tôi có thể dễ dàng tạo một dịch vụ web bằng SOAP hoặc WCF mà trả về DataSets hoặc DataTables, và sau đó tiêu thụ các đối tượng đó một cách dễ dàng và trực tiếp. Việc có thể thực hiện điều này cho phép xây dựng rất nhanh các kiến trúc n-tier , ngay cả khi không có kết nối dữ liệu trực tiếp.
Không có System.Data và sức mạnh của DataViews, DataTables, v.v ... trở nên khó khăn hơn rất nhiều. Chắc chắn bạn có thể tùy chỉnh tạo cấu trúc, đặt dữ liệu trong ở đó và phân phối cấu trúc, đồng thời sử dụng LINQ để làm bất kỳ thứ gì, lọc, v.v. bạn muốn làm .... nhưng kết quả là gấp đôi công việc và làm cho việc sử dụng lại mã trở nên khó khăn hơn rất nhiều. Và nó có nghĩa là sử dụng kiến trúc hướng dịch vụ hiện có của chúng tôi là không thể (không có đại tu lớn.)
Việc thu hồi System.Data là một điều lớn cho các nhà phát triển để đối phó với như sự mất mát của đối tượng máy in trong VB6 vb.net 1.0 là. Những gì khó hiểu hơn trong trường hợp này là lý do tại sao nó là cần thiết - kích hoạt lại nó trong hồ sơ Metro không thể là một khó khăn kỹ thuật của sản phẩm, phải không?
Nó là đủ có giá trị mà tôi sẽ xem xét nghiêm túc bao gồm lớp System.Data Mono như là một phần của bất kỳ ứng dụng tôi tạo (mà rõ ràng là sẽ phải mã nguồn mở.)
có bất kỳ thay đổi đã xảy ra kể từ khi bạn đã xuất bản câu hỏi và câu trả lời của bạn? Bạn có thể đề xuất (các) tham chiếu về bất kỳ thay đổi quan trọng nào không? Cảm ơn. – NoChance