【问题标题】:Entity framework and foreign key as string实体框架和外键作为字符串
【发布时间】:2011-10-19 14:58:17
【问题描述】:

我有以下表格:

 Language
    Id (bigint, primary key)
    Name (nvarchar(100))
    Code (nvarchar(2))

  Article
    Id (bigint, primary key)
    LanguageCode (nvarchar(2), foreign key constraint to Language/Code)
    ...

我的问题:如果我使用实体框架 4 生成模型,它不会生成 Article/LanguageCode 和 Language/Code 之间的关系。这是实体框架的限制吗?我是否也应该将 LanguageId 添加到 Article 表中,还是我在这里做错了什么?

谢谢!

【问题讨论】:

  • 你做错了什么(不确定是什么)。关系应该在那里。
  • 这没有任何意义。删除 Id 并将 Code 设为主要,或使用 Id 作为外部。

标签: c# sql database entity-framework foreign-key-relationship


【解决方案1】:

我认为问题在于 Language.Code 不是 Language 类的主键。 在您的模型中,它允许使用具有相同 Language.Code 的不同语言。

另一件事。从业务的角度来看,根据用户文化而不是语言拥有不同的文章要好得多。因为语言对于单一文化来说并不是唯一的,并且所有商业事物(如 CurrencyFormat、DateFormat、税收,当然还有法律)都是特定于文化的。

【讨论】:

  • 为什么需要 Language.Id ?我认为您只需要 Language.Code 作为主键吗?它是具有 2 列的外键吗?你在做“数据库优先”的开发吗?
  • 嗯,奇怪!我删除了 Language 中的 id 并设置了 Code 主键,现在它可以工作了!谢谢!
  • 我已经更新了我的答案。也许对你来说很有趣。它与您的商业模式有关。不客气!
  • 实际上文章属于一种语言,而不是一个国家。在比利时,我们有三种语言:)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2010-10-17
  • 1970-01-01
  • 2023-04-02
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多