多言語オブジェクトごとに2つのテーブルを作成することで、これを回避できました。つまり、NewsArticleを2つのテーブルNewsArticleText(ローカライズされたコンテンツ、言語ごとに1つのレコード、および言語のISOコードを含む)とNewsArticle(言語に依存しないデータを含む; ArticleId)に分割します。 、ImageUrlなど)3番目のテーブルLanguagesは、使用されるすべての言語とそのISOコードをプライマリキーとして作成されます。
例:
Table "NewsArticle"
-------------------
ArticleId                 : uniqueidentifier
<any other language-neutral fields>
Table "NewsArticleText"
-----------------------
ArticleId          : uniqueidentifier (foreign key referencing the NewsArticle)
LanguageCode       : varchar(6)  (e.g. "en-GB", "de-CH", foreign key referencing the Languages table)
Headline           : varchar(100)
BocyText           : varchar(max)
<any other localized data>
Table "Languages"
-----------------
LanguageId         : uniqueidentifier
LangaugeCode       : varchar(6)
Name               : varchar(20)
dbのクエリは、言語パラメータに基づいて行われます。たとえば、次のコードはすべての英語の記事を返します。
// get all English language articles 
var news = from na in datacontext.NewsArticles
    where na.Deleted == false
    join nt in datacontext.NewsArticlesText 
        on na.ArticleId equals nt.ArticleId
    where nt.LanguageCode == "en-GB"
    select new NewsArticleItem
    {
       ArticleId = na.ArticleId,
       ImageUrl = na.ImageUrl,
       Headline = nt.Headline,
       Abstract = nt.Abstract,
       BodyText = nt.BodyText,
       LanguageCode = nt.LanguageCode,
       DateCreated = na.DateCreated
    };
return news.ToList();