所以我得到了几张这样的表:
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可以来自任何这些类。我怎么能做到这一点?默认情况下,会为每个引用它的表创建一个列。
答案 0 :(得分:0)
如果你想能够使用LINQ / Lambda的所有优点(并且为了你的关系模型),我建议你不要走这条路。
我要创建一个从Language
到每个类的单独链接,或直接从需要它的类链接到LanguageCulture
和Translation
。
我希望实现一个模型,使其尽可能直观地检索和处理数据,即使在构建数据时这可能有点烦人。我非常有信心,你会很高兴你在几个月/几年后建立了真正的关系。
如果你继续你的例子,你会有类似的东西:
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")
这个查询仍然可以通过原始想法加入,但一般来说会更烦人。
如果你想避免一遍又一遍地写同样的东西,你可以使用一个抽象类,其中包含你可以在所有需要它的类中继承的语言字段。