EF 配置
阅读原文时间:2023年07月16日阅读:3

DbContext

public class ZSZDbContext : DbContext  
{  
    //ILog ILogger 容易混淆  
    private static ILog log = LogManager.GetLogger(typeof(ZSZDbContext));

    public ZSZDbContext() : base("name=connstr")  
    //name=conn1表示使用连接字符串中名字为conn1的去连接数据库  
    {  
        Database.SetInitializer<ZSZDbContext>(null);  
        this.Database.Log = sql =>  
        {  
            log.DebugFormat("EF执行SQL:{0}", sql);  
        };  
    }

    protected override void OnModelCreating(DbModelBuilder modelBuilder)  
    {  
        base.OnModelCreating(modelBuilder);  
        modelBuilder.Configurations.AddFromAssembly(Assembly.GetExecutingAssembly());  
    }  
    public DbSet<AdminUserEntity> AdminUsers { get; set; }  
    public DbSet<UserEntity> Users { get; set; }  
    public DbSet<CityEntity> Cities { get; set; }  
    public DbSet<CommunityEntity> Communities { get; set; }  
    public DbSet<PermissionEntity> Permissions { get; set; }  
    public DbSet<RegionEntity> Regions { get; set; }  
    public DbSet<RoleEntity> Roles { get; set; }  
    public DbSet<SettingEntity> Settings { get; set; }  
    public DbSet<AttachmentEntity> Attachments { get; set; }  
    public DbSet<HouseEntity> Houses { get; set; }  
    public DbSet<HouseAppointmentEntity> HouseAppointments { get; set; }  
    public DbSet<IdNameEntity> IdNames { get; set; }  
    public DbSet<HousePicEntity> HousePics { get; set; }  
    public DbSet<AdminLogEntity> AdminUserLogs { get; set; }  
}

Entity

public class HouseEntity : BaseEntity  
{  
    public long CommunityId { get; set; }  
    public virtual CommunityEntity Community { get; set; }  
    public long RoomTypeId { get; set; }  
    public virtual IdNameEntity RoomType { get; set; }  
    public string Address { get; set; }  
    public int MonthRent { get; set; }  
    public long StatusId { get; set; }  
    public virtual IdNameEntity Status { get; set; }  
    public decimal Area { get; set; }  
    public long DecorateStatusId { get; set; }  
    public virtual IdNameEntity DecorateStatus { get; set; }  
    public int TotalFloorCount { get; set; }  
    public int FloorIndex { get; set; }  
    public long TypeId { get; set; }  
    public virtual IdNameEntity Type { get; set; }  
    public string Direction { get; set; }  
    public DateTime LookableDateTime { get; set; }  
    public DateTime CheckInDateTime { get; set; }  
    public string OwnerName { get; set; }  
    public string OwnerPhoneNum { get; set; }  
    public string Description { get; set; }

    public virtual ICollection<AttachmentEntity> Attachments { get; set; } = new List<AttachmentEntity>();  
    public virtual ICollection<HousePicEntity> HousePics { get; set; } = new List<HousePicEntity>();  
}

Config

class HouseConfig : EntityTypeConfiguration<HouseEntity>  
{  
    public HouseConfig()  
    {  
        ToTable("T\_Houses");  
        HasRequired(h => h.Community).WithMany().HasForeignKey(h => h.CommunityId).WillCascadeOnDelete(false);  
        HasRequired(h => h.RoomType).WithMany().HasForeignKey(h => h.RoomTypeId).WillCascadeOnDelete(false);  
        HasRequired(h => h.Status).WithMany().HasForeignKey(h => h.StatusId).WillCascadeOnDelete(false);  
        HasRequired(h => h.DecorateStatus).WithMany().HasForeignKey(h => h.DecorateStatusId).WillCascadeOnDelete(false);  
        HasRequired(h => h.Type).WithMany().HasForeignKey(h => h.TypeId).WillCascadeOnDelete(false);  
        Property(h => h.Address).IsRequired().HasMaxLength();  
        Property(h => h.Description).IsOptional();  
        Property(h => h.Direction).IsRequired().HasMaxLength();  
        Property(h => h.OwnerName).IsRequired().HasMaxLength();  
        Property(h => h.OwnerPhoneNum).IsRequired().HasMaxLength().IsUnicode(false);  
    }  
}