每个具体类型的表,其中表作为上下文属性

本文关键字:上下文 属性 类型 | 更新日期: 2023-09-27 18:14:59

我试图为我所有的表创建一个基类,以确保我有一些数据,如CreateDate/Person等对我所有的数据。

所以基本上,我希望我的表继承自基类,但我希望每个表上的数据是分开的(每个具体类型的表)。

我找到了一些这样的教程,但问题是,我不会有任何强命名的属性为我的表。

weblogs.asp.net

如您所见,在链接中,他创建了基类的dbset,与具体类没有关系。

public class InheritanceMappingContext : DbContext
{
    public DbSet<BillingDetail> BillingDetails { get; set; }
}
下面是我的代码:
public abstract class TrackableBase 
{
    public int Id { get; set; }
    public virtual DateTime CreateDate { get; protected set; }
    public TrackableBase()
    {
        CreateDate = DateTime.Now;
    }
}
public class User : TrackableBase
{
    public string Name { get; set; }
    public string Email { get; set; }
}

每个具体类型的表,其中表作为上下文属性

您应该为每个类添加一个DbSet类型的属性,并为映射添加OnModelCreating

public class InheritanceMappingContext : DbContext
{
    public DbSet<User> Users { get; set; }

    protected override void OnModelCreating(DbModelBuilder modelBuilder)
    {
        modelBuilder.Entity<User>().Map(m =>
        {
            m.MapInheritedProperties();
            m.ToTable("Users");
        });
    }
}