J'essaie d'implémenter une logique de localisation en utilisant json pour stocker la chaîne localisée dans la base de données en utilisant Entity Framework, mais j'ai besoin d'aide pour compléter l'objet.Récupère le nom de la propriété déclarante dans l'objet
Voici mon champ localisé
[ComplexType]
public class MultiLanguageField : Dictionary<string, string>
{
public void AddRange(Dictionary<string, string> collection)
{
foreach (var item in collection)
{
this.Add(item.Key, item.Value);
}
}
[Column("Name")]
public string Serialized
{
get { return JsonConvert.SerializeObject(this); }
private set
{
if(string.IsNullOrEmpty(value))
{
Clear();
return;
}
var items = JsonConvert.DeserializeObject<MultiLanguageField>(value);
Clear();
AddRange(items);
}
}
}
Je déclare simplement la propriété dans un objet comme celui-ci.
public MultiLanguageField LocalizedField { get; set; }
Je veux être en mesure de remplacer l'attribut de colonne sur la méthode sérialisé de sorte que le champ de base de données prend le nom de la propriété déclarant (LocalizedField dans ce cas).
J'ai regardé la réflexion, mais je n'arrive pas à obtenir le nom de la propriété déclarante.
Toute aide appréciée. Si vous connaissez un meilleur moyen de gérer la localisation dans une base de données avec Entity Framework, je vous encourage à entrer vos commentaires!
Thx
EDIT
Je vais essayer de préciser. Par défaut, le nom de la colonne dans la base de données serait LocalizedField_Serialized (PropertyNameOnParent_PropertyNameOnComplexType).
Comment puis-je dire à Entity Framework de ne prendre que PropertyNameOnParent au lieu d'ajouter la propriété "Serialized".
Cela ressemble à un début. Je le regarderai plus tard.
Entity Framework complex type's columns naming convention