Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/list/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Entity framework 4.1 首先使用ef代码将导航属性设置为共享密钥_Entity Framework 4.1_Ef Code First - Fatal编程技术网

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用于实体的每个单独属性的本地化条目可能对性能要求很高。请参阅一些好的提示(不仅仅是公认的答案)。

好的,我想我理解为什么这是不可能的。感谢您提供有关本地化数据的提示。