首页 > 解决方案 > 多语言支持 EF Core 值表

问题描述

我在使用 EF Core ORM 映射我的关系模式时遇到了问题,我迫切地寻求帮助。我有一张Event桌子(int id, text name, int typeId)EventTypeLocale桌子(int id, text locale, text name)

为了解释为什么我不能重组我的数据库模式以附加EventIdEventTypeLocale表 - 有一个示例内容EventTypeLocale

(1,'en', 'External event')
(1,'de','Externe Veranstaltung')
(2,'en', 'Internal event ')
(2,'de','Internes Ereignis')

并且Event表有关于会话 + 其类型的信息 -typeId应该参考EventTypeLocaleFK。但是,正如您从示例数据中看到的那样 - 一个 id 将有多个数据库行(因为有一个复合键id + locale)。我想将所有位置中的类型加载到EventTypeLocales集合中。

我有两节课

public class Event
{
    public int Id { get; set; }
    public string Name { get; set; }
    public int TypeId { get; set; }
    public List<EventTypeLocale> EventTypeLocales { get; set; }
}
public class EventTypeLocale
{
    public int Id { get; set; }
    public string Locale { get; set; }
    public string Name { get; set; }
}

复杂的部分是在Context : DbContext类中配置它。你能帮我配置这样的关系吗?

我发布了一个类似的问题,基本上代表了更困难的情况下的相同问题。不幸的是,提议的解决方案仅适用于获取数据,但是当我尝试Event用另一个更新对象时TypeId- EF 不允许这样做(因为在提议的解决方案TypeId中配置为 PrincipleKey。因此,上一篇文章中接受的解决方案没有在这种情况下工作。

标签: c#ormentity-framework-coremultilingualef-core-3.1

解决方案


推荐阅读