gpt4 book ai didi

c# - 同一类型的多个对象集

转载 作者:太空狗 更新时间:2023-10-29 18:36:06 24 4
gpt4 key购买 nike

我尝试在 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 类型,例如

类 PossibleWord { ... } 类 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; }
}

最佳答案

大概您正在尝试在原始代码中表示 2 个不同的表。我会考虑两个类,UsedWord 和 PossibleWord,让它们都实现一个公共(public)接口(interface),例如:IWord?或者更简单,只需在 Word 上有一个 bool 型“IsUsed”字段和一个表/类型。

关于c# - 同一类型的多个对象集,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11914052/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com