我想首先使用代码并让数据库为我的所有实体类型生成guid主键(因为这似乎不是让ef自动执行此操作的好方法)。
我的所有实体都禁止使用一些(用于asp.net成员资格)继承自抽象基类“Entity”
public abstract class Entity
{
public Guid Id { get; set; }
}
我的实体看起来像
public class Company : Entity
{
public string Name { get; set; }
public string Logo { get; set; }
}
如果我离开并运行它,CF会创建表格,其中包含公司和其他实体派生类的单独表格,但是数据库似乎不会生成guid。
要获取生成的guid,我已将以下内容添加到我的DBContext
protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
base.OnModelCreating(modelBuilder);
modelBuilder.Entity<Entity>()
.Property(e => e.Id)
.HasDatabaseGeneratedOption(DatabaseGeneratedOption.Identity);
}
我希望所有主键guid都由数据库生成。
当我现在运行时,CF为所有称为“实体”的实体创建一个表,该实体具有设置为可为空的派生类的列的混合。
我怎样才能使每个派生类都有一个表并自动为我生成一个guid,而不必为每个实体单独添加约定?