带有类型继承的MongoDB集合错误(FileFormatException)

时间:2012-11-22 14:57:28

标签: c# mongodb inheritance

这是我与Mongo(以及一般NoSQL)的前几天,所以我可能正在尝试一些只能在我脑海中完成的事情。

设定:

DB: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或User1User类型的记录。不幸的是,一旦我使用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

这是一个问题,因为我想在多个项目中使用用户身份验证库,然后只需扩展用户对象以添加特定于应用程序的设置。

1 个答案:

答案 0 :(得分:0)

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

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

不幸的是,这只会修复新记录,我还没想出如何将此修补程序应用于无法加载的现有记录。