Trong cơ sở dữ liệu, tôi đã lưu trữ hàng trăm tài liệu. Bây giờ kiến trúc hệ thống đã thay đổi và (trong số những người khác) mô hình đã được di chuyển vào không gian tên khác nhau (trong lắp ráp khác nhau).RavenDB ném ngoại lệ sau khi thay đổi không gian tên mô hình
Dưới đây, siêu dữ liệu của tài liệu mẫu được hiển thị:
và mã Tôi đang sử dụng để lấy tài liệu ví dụ:
var configuration = documentSession.Load<One.Social.Core.Entities.Setting>("Setting");
mà ném đúc ngoại lệ:
[InvalidCastException: Unable to cast object of type 'One.QA.Core.Entities.Setting' to type 'One.Social.Core.Entities.Setting'.]
CẬP NHẬT:
Lỗi tương tự nhưng từ NewtonsoftJson tăng lên, trong khi tôi có bộ sưu tập loại được chỉ định bên trong dosument, hiện đã thay đổi.
Trong cơ sở dữ liệu tôi có Câu hỏi tài liệu, trong đó có chứa một danh sách các trả lời:
Trong mã, kiểu trông như thế:
namespace One.Social.Ask.Web.Models
{
public class Question
{
public string Content { get; set; }
public IList<One.Social.Ask.Web.Models.Answer> Answers { get; set; }
}
}
Đáp namespace thay đổi. Ngoài ra, bây giờ nó bắt nguồn từ IList <>, không có ICollection <>. Hiện tại, tôi không cần siêu dữ liệu $type
, phải là:
.
Trong khi đó là một danh sách bây giờ, một lỗi tăng vì những thông tin cũ $type
:
Newtonsoft.Json.JsonSerializationException: Error resolving type specified in JSON 'System.Collections.ObjectModel.Collection`1[[One.QA.Core.Entities.Answer, One.QA.Core]], mscorlib'. ---> Newtonsoft.Json.JsonSerializationException: Could not find type 'System.Collections.ObjectModel.Collection`1[[One.QA.Core.Entities.Answer, One.QA.Core]]' in assembly 'mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089'.
cách tốt nhất để di chuyển tất cả các tài liệu để phản ánh các loại tên hiện nay là gì? Có cơ chế tích hợp nào không?
Btw: Tôi đang sử dụng RavenDB - Xây dựng # 960
Cảm ơn, thực sự tôi đã có loại thứ hai. Sau khi xóa quạ đã tự động thay đổi thông tin meta tài liệu thành kiểu hiện tại "Raven-Clr-Type": "One.Social.Ask.Web.Models.Setting, One.Social.Ask.Web". Bạn có thể xem xét cập nhật câu hỏi của tôi không? Tôi có một vấn đề tương tự. – jwaliszko
Điều này là chính xác. Giải quyết vấn đề của tôi :) Cảm ơn bạn Ayende –
Tôi đã có cùng một vấn đề mà tôi thậm chí không thể xóa các tài liệu từ RavenDB Studio. Điều này là do clr-type cũ vẫn còn hiện diện trong một plugin! Tôi đã phải dừng lại ravendb, xóa các plugin, khởi động lại ravendb, xóa tất cả các tài liệu thông qua các studio (nó làm việc bây giờ), sau đó dừng lại ravendb một lần nữa, reïnstall các plugin và bắt đầu ravendb một lần nữa. – ldx