0

これは、Mongo (および一般的な NoSQL) を使用する最初の数日であるため、頭の中でしかできないことを試している可能性があります。

設定:

データベース: MongoDB 2.2.1

インターフェース: nuget の最新の 10gen c# ドライバー

私はこのような一般的なクラスを持っています

public class User { public string userName {get;set;} }

そして、このようなアプリケーション固有の実装

public class App1User : User { public int appSpecificProperty { get;set; } }

問題:

私のアプリケーションでは、タイプ User として保存されたレコードを User または App1User としてロードできます。残念ながら、App1User タイプを使用してレコードを保存すると、それをユーザーとしてロードできなくなります (FileFormatException: Element 'appSpecificProperty' は、クラス User のフィールドまたはプロパティと一致しません)。

次のようなアイテムをロードします。

var collection = mongDB.GetCollection<User>("users");
var query = new QueryDocument("username" : userName);
var user = collection.Find(query).SingleOrDefault(); // error here if record was type App1User

複数のプロジェクトでユーザー認証ライブラリを使用し、ユーザー オブジェクトを拡張してアプリケーション固有の設定を追加したいので、これは問題です。

4

1 に答える 1

0

親クラスをこの属性でマークする必要があることを発見しました

[BsonDiscriminator("baseuser", RootClass = true)]

残念ながら、これは新しいレコードのみを修正します。ロードできない既存のレコードにこの修正を適用する方法がわかりません。

于 2012-11-22T16:16:04.233 に答える