我创建了表结构,使状态在数据库中本地化:
Status {StatusId, Value} -- Value in this table is status value in default language
StatusTranslation {StatusId, Language, TrasnlationValue} -- StatusId and Language are combined key
但是我很难在实体框架中完成这项工作
当默认语言很容易Status.ToList()
但是当我需要翻译时,我会转到get方法de-CH
,但我无法返回已翻译的状态。
使用实体框架映射此图的最佳方法是什么?
我认为我的一些方法适用于这种情况,但最终我发现它们不适用
这是代码中的对象:
public class Status
{
public int StatusId{ get; set; }
public string Value{ get; set; }
public virtual ICollection<StatusTranslation > StatusTranslations { get; set; }
}
public class StatusTranslation
{
public int StatusId{ get; set; }
public string Language{ get; set; }
public string TrasnlationValue{ get; set; }
public virtual Status Status { get; set; }
}
的更新
var statuses = from c in context.Statuses
join t in context.StatusTranslations
on c.StatusId equals t.StatusId
where t.Language == language
var statuses = from t in context.StatusTranslations
where t.Language == language
select t.Status;
两人都以默认形式(默认语言)返回状态
返回参数应该是IEnumerable<Status>
meybe这是不可能的。
所以我可以回归IEnumerable<Status>
或IEnumerable<StatusTranslation>
但是这不是一个函数或者有希望吗?