0

我想为我的实体实现一个基类,所以我不必在每个实体中定义一个 Guid Id 字段。我创建了以下基类:

public abstract class IdableEntity
    {
        [Key]
        public Guid Id { get; set; }

        protected IdableEntity()
        {
            Id = Guid.NewGuid();
        }
    }

这样做是因为据我所知,在这种情况下我只能使用 [DatabaseGenerated...] 属性,因为我必须转到数据库并更改所有表的 ID 字段才能将 (newid()) 调用作为“初始化器”。如果一个人有很多实体类——因此有很多表,这是非常不方便的。

但是现在,我将不得不通过调用每个子类中的基本构造函数来清除构造函数,对吗?如果是这样,它甚至值得吗?

4

2 回答 2

2

如果您按原样使用代码,您需要做的就是:

public class ChildEntity : IdableEntity
{
    // ...
}

当您创建 ChildEntity 类的实例时,将自动调用受保护的基本 IdableEntity 构造函数,因为它不带参数。

于 2012-08-02T23:54:56.613 回答
0

解决问题的另一种方法是使用代码自动遍历所有表并设置默认约束。其他人已经在这里回答了如何做到这一点:SQL Server - 向所有表添加默认约束

于 2012-08-03T00:54:56.987 回答