我正在尝试创建一个支持本地化的域模型。我查看了一些之前提出的 SO 问题,但我不太喜欢提出的解决方案。例如,在这个问题中,我认为为每个应该支持本地化数据的实体创建一个额外的实体是一种矫枉过正的做法。我宁愿将我所有实体的本地化数据放在一个实体中,该实体的唯一目的是保存本地化数据。
我提出的解决方案如下:
创建一个
LocalizedEntity
类,所有应该支持本地化的实体都将从该类继承。创建一个
LocalizedData
实体,该实体基本上将按文化保存实际的本地化值。
更新:
public class LocalizedEntity
{
public String Code { get; set; }
}
public enum ResourceType
{
CityName,
CityDescription,
StreetName,
AreaName
//others...
}
public class LocalizedData
{
public Int32 Id { get; set; }
public String Code { get; set; }
public ResourceType Type { get; set; }
public Int32 CultureId { get; set; }
public String Value { get; set; }
}
public class City : LocalizedEntity
{
public Int32 Id { get; set; }
public virtual ICollection<Area> Areas { get; set; }
//others
}
因此,业务层将获取本地化实体,然后通过and去从LocalizedData
实体中获取其本地化值。当然,为了避免多次往返数据库,一些缓存可能是合适的。Code
ResourceType
你的意见?