C# 实体框架-本地化实体-最佳解决方案?
我正在处理带有EF7本地化的ASP.NET vNext项目。我有一些想法,如何提供本地化的数据将存储在数据库中。请问,最好的解决方案是什么?A、 B还是C?还是存在更好的 解决方案A:C# 实体框架-本地化实体-最佳解决方案?,c#,entity-framework,C#,Entity Framework,我正在处理带有EF7本地化的ASP.NET vNext项目。我有一些想法,如何提供本地化的数据将存储在数据库中。请问,最好的解决方案是什么?A、 B还是C?还是存在更好的 解决方案A: public class BaseEntity { [Key] public Guid Id { get; set; } public BaseEntityModel() { this.Id = new Guid(); } [Required]
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; }
}
解决方案C:
用于商业。Nop可以为每个属性创建键+语言+值的静态资源。这些资源被缓存。表中的行包含资源文件的键。这个实现会导致速度降低吗?我认为c是最好的解决方案。Nopcommerce通过保持松散耦合来实现这一点,这是最好的方式。只是好奇——为什么要使用数据库来存储本地化数据?在我看来,您的数据库应该尽可能与文化无关,这就是为什么我们有资源文件。考虑到sesource文件是缓存的,所以一旦被访问,性能影响就可以忽略。谢谢,我将使用解决方案CJust来澄清-在DB中存储翻译并不坏。只要记住,如果你有一个小系统,你就有一个开箱即用的资源。若你们有更大的系统,那个么在数据库中存储翻译将变得困难和有问题。我将构建模块化CMS。我现在看到了nop架构。BlogPost在实体语言ID和公共虚拟语言中的使用。。。。。所以这个表中的每一行都是用一对多语言表本地化的。。。这将提供行中字符串的本地化版本。您可以使用语言参数进行查询。资源用于验证消息、列描述等??我说得对吗?
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; }
}