0

このコードファーストデータモデルを考えると、エンティティのLocalizedNameナビゲーションプロパティをどのように構成または実装しますか?これは、一方のキーのインスタンスのプロパティを使用し、もう一方のキーとしてコンテキストからのプロパティを使用しますか?ProductLocalNameKeyProduct_languageId

public class SampleDataContext : DbContext
{
    int _languageId;

    public SampleDataContext(int languageId)
    {
        _languageId = languageId;
    }

    public DbSet<LocalizedName> LocalNames { get; set; }
    public DbSet<Product> Products { get; set; }
    public DbSet<Language> Languages { get; set; }
}

public class LocalizedName
{
    [Key, Column(Order = 0)]
    public Guid Key { get; set; }

    [Key, Column(Order = 1)]
    public int LanguageId { get; set; }

    public string Name { get; set; }
}

public class Language
{      
    public int Id { get; set; }
    public string Name{ get; set; }
}

public class Product
{
    public int Id { get; set; }
    public string Sku { get; set; }
    public Guid LocalNameKey { get; set; }
}
4

1 に答える 1

0

いいえ、できません。試行すると、EF はコンテキストに対応するテーブルを作成しようとし、おそらく試行を停止します。

リポジトリ パターンを使用して、ローカライズされたエンティティに対するクエリにも言語 ID が組み込まれるようにする必要があります (コンテキストではなく、リポジトリにカプセル化されます)。

余談ですが、エンティティの個々のプロパティごとにローカライズされたエントリへの FK を持つことは、パフォーマンスに関して非常に要求が厳しい場合があります。いくつかの良いヒントについては、この Q&Aを参照してください(受け入れられた回答だけではありません)。

于 2012-11-17T11:24:53.720 に答える