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 может создавать для каждого свойства статический ресурс с ключом + язык + значение. Эти ресурсы кэшируются. Строка в таблице содержит ключ к файлу ресурсов. Может ли эта реализация вызвать более низкую скорость?
Просто любопытно - зачем использовать базу данных для хранения локализованных данных? По-моему, ваша БД должна быть максимально нейтральной по отношению к культуре, поэтому у нас есть файлы ресурсов. Примите во внимание, что файлы sesource кэшируются, поэтому при доступе к перпендикулярному эффекту можно пренебречь. – Kamo
Спасибо, я буду использовать решение C –
Просто для уточнения - хранение переводов в БД неплохо. Просто имейте в виду, что если у вас небольшая система, у вас есть что-то из коробки, называемое ресурсами. Если у вас большая система, хранение переводов в БД будет раньше, чем позже, станет сложным и проблематичным. – Kamo