Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/entity-framework/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 实体框架(CF)多个表PK到同一FK_C#_Entity Framework_Entity Framework 6 - Fatal编程技术网

C# 实体框架(CF)多个表PK到同一FK

C# 实体框架(CF)多个表PK到同一FK,c#,entity-framework,entity-framework-6,C#,Entity Framework,Entity Framework 6,我有几张这样的桌子: public class Family { public Guid Id { get; set; } public virtual Career Career { get; set; } } public class Career { public Guid Id { get; set; } } 还有一些类似的课程 然后是一个表,其中所有的翻译都取决于语言 public class Language { public string

我有几张这样的桌子:

    public class Family
{
    public Guid Id { get; set; }
    public virtual Career Career { get; set; }
}

public class Career
{
    public Guid Id { get; set; }
}
还有一些类似的课程

然后是一个表,其中所有的翻译都取决于语言

public class Language
{
    public string LanguageCulture { get; set; }
    public Guid ObjectId { get; set; }
    public string Translation { get; set; }
}

我这里的问题是,我想让语言理解ObjectId可以来自这些类中的任何一个。我怎样才能做到这一点?默认情况下,为引用它的每个表创建一列

如果您希望能够使用LINQ/Lambda的所有优点(为了您的关系模型),我建议您不要走这条路

我会创建一个从
语言
到每个类的单独链接,或者直接从需要它的类链接到
语言文化
翻译

我希望实现一个模型,使检索和处理数据尽可能直观,即使现在在构建数据时这可能有点麻烦。我很有信心,在接下来的几个月/几年里,你会很高兴建立起真正的关系

如果你继续你的例子,你会有这样的东西:

var object = _dataset.Where( x=> x.somecolumn == somevalue);
var language = _dataset.Where( x => x.ObjectType == object.Type
                                    && x.ObjectID == object.ID );
而不是简单地做

var object = _dataset.Where( x=> x.somecolumn == somevalue);
object.Language //if you create a separate link to each object
object.LanguageCulture // if you remove your Language object and link directly to what it is your after
在后者中,您只需要获取原始对象,还可以进行子查询,如

var objects = _dataset.Where( x=> x.somecolumn == somevalue
                                 && x.Language.LanguageCulture.Country == "Sweden")
在您最初的想法中,使用连接仍然可以进行此查询,但一般来说,这样做会更烦人

如果您想避免反复编写相同的内容,可以使用一个抽象类,该类包含可以在所有需要它的类中继承的语言字段