2015-09-14 4 views
3

Im работает над проектом ASP.NET vNext с локализацией EF7. У меня есть идея, как обеспечить локализованные данные, которые будут храниться в базе данных. Пожалуйста, что самое лучшее РЕШЕНИЕ? A, B или C? или существуют лучше?Entity Framework - локализованное решение -best?

РЕШЕНИЕ:

public class BaseEntity 
{ 
    [Key] 
    public Guid Id { get; set; } 
    public BaseEntityModel() 
    { 
     this.Id = new Guid(); 
    } 

    [Required] 
    public virtual Language Language { get; set; } 

    public virtual ICollection<BaseEntity> Translations { get; set; } 

}  

public class Language 
{ 
    public Guid Id { get; set; } 

    [StringLength(8)] 
    public string Code { get; set; } // Unique 
    public string Name { get; set; } 
} 

РЕШЕНИЕ B: (использовать составной ключ - RowId и LanguageID), как это ...

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

    public BaseEntityModel() 
    { 
     this.Id = new Guid(); 
    } 

    [Key, Column(Order = 1)] 
    public Guid LanguageId { get; set; } 
    [Required] 
    public virtual Language Language { get; set; } 
}  

РЕШЕНИЕ C: используется NopCommerce. Nop может создавать для каждого свойства статический ресурс с ключом + язык + значение. Эти ресурсы кэшируются. Строка в таблице содержит ключ к файлу ресурсов. Может ли эта реализация вызвать более низкую скорость?

+0

Просто любопытно - зачем использовать базу данных для хранения локализованных данных? По-моему, ваша БД должна быть максимально нейтральной по отношению к культуре, поэтому у нас есть файлы ресурсов. Примите во внимание, что файлы sesource кэшируются, поэтому при доступе к перпендикулярному эффекту можно пренебречь. – Kamo

+0

Спасибо, я буду использовать решение C –

+0

Просто для уточнения - хранение переводов в БД неплохо. Просто имейте в виду, что если у вас небольшая система, у вас есть что-то из коробки, называемое ресурсами. Если у вас большая система, хранение переводов в БД будет раньше, чем позже, станет сложным и проблематичным. – Kamo

ответ

0

Я бы сказал, что c - лучшее решение. Nopcommerce сделала это наилучшим образом, поддерживая его слабосвязанным.

Смежные вопросы