我尝试在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; }
}
但这感觉太糟糕了。
编辑:当然,另一个微不足道的方法是使用两种不同的单词类型,例如
class PossibleWord { ... } class 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; }
}