在C#中映射IS-A关系的正确方法

时间:2012-03-19 11:46:51

标签: c# sql orm

让我们想象一个简单的IS-A关系,就像这个例子:

create table EntityAbstract(
  IDEntityAbstract int identity primary key,
  Name nvarchar(50) not null,
)


create table OneOfConcreteEntity(
  EntityAbstract int,
  constraint PK_Image primary key (EntityAbstract),
  constraint FK_Image foreign key (EntityAbstract) references EntityAbstract(IDEntityAbstract)  
)

当我从数据库中映射实体时,我应该将它们作为单独的和唯一的对象,还是应该使具体类从抽象实体扩展?

e.g:

  public class EntityAbstract
    {
        public int EntityAbstractID { get; set; }
        public string Name { get; set; }
        public EntityAbstract(int entityID, string name)
        {
            this.EntityAbstractID = entityID;
            this.Name = name;
        }
    }

   public class OneOfConcreatEntity : EntityAbstract
    {
        public OneOfConcreatEntity(int entityID, string name) : base(entityID, name){ }
    }

什么是最好的选择?考虑不止一个具体实体和更复杂的实体。

1 个答案:

答案 0 :(得分:1)

有几个design patterns涉及IS-A关系,通常这正是继承的目的。