I am trying to use a custom attribute on a Entity class generated automatically by the Entity Framework.
The problem is how to add an property attribute on an existing field?
Here the point where i am right now:
//the custom attribute class
public class MyCustomAttribute : Attribute
{
    public String Key { get; set; }
}
//generated automatically
public partial class EntityClass
{
    public String Existent { get; set; }
    //property's
}
//set an metadata class for my entity
[MetadataType(typeof(EntityClassMetaData))]
public partial class EntityClass
{
    //if i add a new property to the Entity, it works. This attribute will be read
    [MyCustomAttribute(Key = "KeyOne" )]
    public int newProp { get; set; }
}
public class EntityClassMetaData
{
    //adding the custom attribute to the existing property
    [MyCustomAttribute(Key = "keyMeta") ]
    public String Existent { get; set; }    
}
Running this test:
    [TestMethod]
      public void test1()
    {
        foreach (var prop in typeof(EntityClass).GetProperties())
        {
            var att = prop.GetCustomAttribute<MyCustomAttribute>();
            if (att != null)
            {
                Console.WriteLine($"Found {att.Key}");
            }
        }                    
    }
will produce:
Found KeyOne
Or the Metadata class store the attribute in a different way or only works for data annotations.
I am stuck here, how can i set and read custom attributes of the generated class without having to edit the generated file?
Aucun commentaire:
Enregistrer un commentaire