BaseEntity cho Entity Framework

By
Advertisement

Base entity giới thiệu sau đây sẽ giúp điền sẵn các thông tin như ngày khởi tạo, người khởi tạo, ngày giờ chỉnh sửa, người chỉnh sửa. thực hiện trên entity framework 6.


Tệp BaseEntity.cs
public abstract class BaseEntity
    {
        [Key]
        public Int64 RecId { get; set; }
       
        public DateTime CreatedDate { get; set; }
       
        public DateTime ModifiedDate { get;  set; }
        [MaxLength(30)]
        public string CreatedBy { get;set; }
        [MaxLength(30)]
        public string ModifiedBy { get;set; }
    }
Tệp PurchTable.cs ví dụ cách sử dụng baseEntity

public class PurchTable : BaseEntity
    {
        [MaxLength(200), MinLength(0)]
        public string HeaderText { get; set; }
        [MaxLength(200), MinLength(0)]
        public string HeaderNode { get; set; }
        [Required]
        public DateTime TransDate { get; set; }
    }
Tệp  InventContext.cs để mô tả một context:

public class InventContext: DbContext
    {
        public DbSet PurchTable { get; set; }
        public InventContext():base("name=Dbcbb")
        {
        }
        public override int SaveChanges()
        {
            AddTimestamps();
            int result = -1;
            try
            {
                result = base.SaveChanges();
            }
            catch (DbEntityValidationException dbEx)
            {
                foreach (DbEntityValidationResult entityErr in dbEx.EntityValidationErrors)
                {
                    foreach (DbValidationError error in entityErr.ValidationErrors)
                    {
                        Console.WriteLine("Error Property Name {0} : Error Message: {1}",
                                            error.PropertyName, error.ErrorMessage);
                    }
                }
            }
            return result;
        }
        private void AddTimestamps()
        {
            var entities = this.ChangeTracker.Entries().Where(x => x.Entity is BaseEntity && ((x.State == EntityState.Added || x.State == EntityState.Modified)));
            var currentUsername = !string.IsNullOrEmpty(ConfigEnvironment.CurrentUserLoged)
                ? ConfigEnvironment.CurrentUserLoged
                : "Anonymous";
            DateTime dt = this.Database.SqlQuery("select getdate()").ToList()[0];
            foreach (var entity in entities)
            {
                if (entity.State == EntityState.Added)
                {
                    ((BaseEntity)entity.Entity).CreatedDate=(dt);
                    ((BaseEntity)entity.Entity).CreatedBy=(currentUsername);
                }
                ((BaseEntity)entity.Entity).ModifiedDate=(dt);
                ((BaseEntity)entity.Entity).ModifiedBy=(currentUsername);
            }
        }
    }
Thực hiện hết sức đơn giản, từ sau chỉ cần thêm đối tượng kế thừa từ BaseEntity là OK.
Chúc vui vẻ.

0 blogger:

Đăng nhận xét