我尝试在 EF5 RC 中创建类似于以下内容的数据上下文:
class WordContext : DbContext {
public DbSet<Word> PossibleWords { get; set; }
public DbSet<Word> UsedWords { get; set; }
}
当我尝试更新数据库时,我收到一个异常消息:不支持每种类型的多个对象集。对象集“PossibleWords”和“UsedWords”都可以包含“TestProject.Word”类型的实例。
经过一番谷歌搜索后,似乎在 EF 中构建这样的数据上下文实际上是不可能的。
我的问题是:存储这样的数据有什么好的代码优先设计?
我想一个微不足道的可能是这样的:
class WordContext : DbContext {
public DbSet<Words> Words { get; set; }
}
class Words {
public int ID { get; set; }
public IList<string> PossibleWords { get; set; }
public IList<string> UsedWords { get; set; }
}
但这只是感觉很糟糕。
编辑:当然,另一个简单的方法是使用 2 种不同的 Word 类型,例如
类可能词 { ... } 类 BannedWord { ... }
其实现在写下来也没那么糟,嗯……
编辑2:
以防万一其他人也遇到这种情况,我将展示它最终是如何解决的:
class Word {
[Key]
public string String { get; set; }
}
class PossibleWord : Word { }
class UsedWord : Word { }
class WordContext : DbContext {
public DbSet<PossibleWord> PossibleWords { get; set; }
public DbSet<UsedWord> UsedWords { get; set; }
}