具有属性或动态元数据争论的具体类

时间:2016-11-16 22:21:53

标签: c# entity-framework class properties

因此,我目前正在讨论使用属性定义具体类的选项,或者使用元数据类型设计。例如:

public class Employee
{
    public Guid Id { get; set; }
    public string Name { get; set; }
    public string EmployeeCode { get; set; }
    public string SpecialAssignment { get; set; }
    public string SomeFutureProperty { get; set; }
}

与键/值对设计相对应,可以是动态的:

public class Employee
{
    public Guid Id { get; set; }
    public string Name { get; set; }
    public virtual ICollection<MetaKeyValue> Properties { get; set; }
}

public class MetaKey
{
    public Guid Id { get; set; }
    public string EntityType { get; set; } // could be a dictionary or enum
    public string Name { get; set; }
    public string Description { get; set; }
    public string Required { get; set; }
}

public class MetaKeyValue
{
    public Guid Id { get; set; }
    public Guid EntityId { get; set; }
    public Guid MetaKeyId { get; set; }
    public string Value { get; set; } // string isn't the preferred object type
}  

所以,争论的焦点是,我不确定哪一个更有效率。目标持久性是使用Entity Framework的SQL数据库。元数据设计的优点在于无需修改代码和规划部署,新的&#34;属性&#34;可以添加到实体中,可以添加和检索值。否定的是,它并不是我所习惯的,因为我是一名喜欢静态定义的具体课程的老派编码员。动态设计会让我在后面的后方咬我吗?

0 个答案:

没有答案