多个相同类型的对象集
我尝试在EF5 RC中创建一个与此类似的数据上下文:
class WordContext : DbContext { public DbSet PossibleWords { get; set; } public DbSet UsedWords { get; set; } }
当我尝试更新数据库时,我收到一个例外说: 不支持每种类型的多个对象集。 对象集’PossibleWords’和’UsedWords’都可以包含’TestProject.Word’类型的实例。
经过一些谷歌搜索后,似乎在EF中实际上不可能构建这样的数据上下文。
我的问题是: 存储这样的数据的代码优先设计是什么?
我想一个微不足道的可能是这样的:
class WordContext : DbContext { public DbSet Words { get; set; } } class Words { public int ID { get; set; } public IList PossibleWords { get; set; } public IList UsedWords { get; set; } }
但这感觉很糟糕 。
编辑:当然,另一个微不足道的是使用2种不同的Word类型,比如
class PossibleWord {…}类BannedWord {…}
实际上,现在我把它写下来它甚至看起来都不那么糟糕,嗯……
EDIT2:
为了防止其他人遇到这种情况,我将展示它最终是如何解决的:
class Word { [Key] public string String { get; set; } } class PossibleWord : Word { } class UsedWord : Word { } class WordContext : DbContext { public DbSet PossibleWords { get; set; } public DbSet UsedWords { get; set; } }
据推测,您试图在原始代码中表示2个不同的表。 我会考虑两个类,UsedWord和PossibleWord,只是让它们都实现了一个通用接口,比如说:IWord? 或者更简单,只需在Word上有一个bool“IsUsed”字段,以及一个表/类型。