这是我与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
这是一个问题,因为我想在多个项目中使用用户身份验证库,然后只需扩展用户对象以添加特定于应用程序的设置。
答案 0 :(得分:0)
我发现您需要使用此属性标记您的Parent类
[BsonDiscriminator("baseuser", RootClass = true)]
不幸的是,这只会修复新记录,我还没想出如何将此修补程序应用于无法加载的现有记录。