Entity framework 4.1 首先使用ef代码将导航属性设置为共享密钥
考虑到这种代码优先的数据模型,我如何在Entity framework 4.1 首先使用ef代码将导航属性设置为共享密钥,entity-framework-4.1,ef-code-first,Entity Framework 4.1,Ef Code First,考虑到这种代码优先的数据模型,我如何在产品实体上配置或实现本地化名称导航属性,该属性在产品实例上使用LocalNameKey属性作为其中一个键,在上下文中使用\u languageId作为另一个键 public class SampleDataContext : DbContext { int _languageId; public SampleDataContext(int languageId) { _languageId = languageId;
产品
实体上配置或实现本地化名称
导航属性,该属性在产品
实例上使用LocalNameKey
属性作为其中一个键,在上下文中使用\u 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; }
}
公共类SampleDataContext:DbContext
{
int_languageId;
公共SampleDataContext(int languageId)
{
_languageId=languageId;
}
公共DbSet LocalNames{get;set;}
公共数据库集产品{get;set;}
公共数据库集语言{get;set;}
}
公共类本地化名称
{
[键,列(顺序=0)]
公共Guid密钥{get;set;}
[键,列(顺序=1)]
public int LanguageId{get;set;}
公共字符串名称{get;set;}
}
公共类语言
{
公共int Id{get;set;}
公共字符串名称{get;set;}
}
公共类产品
{
公共int Id{get;set;}
公共字符串Sku{get;set;}
公共Guid LocalNameKey{get;set;}
}
不,你不能。如果您尝试,EF将尝试创建一个与上下文对应的表,并且可能会停止尝试
您必须使用存储库模式来确保对任何本地化实体的查询也包含语言id(将封装在存储库中,而不是上下文中)
另一方面,将FK用于实体的每个单独属性的本地化条目可能对性能要求很高。请参阅一些好的提示(不仅仅是公认的答案)。好的,我想我理解为什么这是不可能的。感谢您提供有关本地化数据的提示。