鉴于此代码第一个数据模型,我将如何在LocalizedName
实体上配置或实现Product
导航属性,该属性使用LocalNameKey
实例上的Product
属性其中一个键,以及上下文中的_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; }
}
答案 0 :(得分:0)
不,你不能。如果你尝试,EF将尝试创建一个与上下文相对应的表,并可能阻止尝试。
您必须使用存储库模式来确保任何本地化实体上的查询还包含语言ID(将封装在存储库中,而不是上下文中。)
顺便说一句,将FK用于实体的每个单独属性的本地化条目可能在性能方面非常苛刻。请参阅this Q&A以获取一些好的提示(不仅仅是接受的答案)。