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:元素'appSpecificProperty'不匹配用户类的任何字段或属性)。

我加载这样的项目:

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

我发现您需要使用此属性标记您的 Parent 类

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

不幸的是,这只会修复新记录,我还没有弄清楚如何将此修复应用于无法加载的现有记录。

于 2012-11-22T16:16:04.233 回答