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 BaseEntityTệp PurchTable.cs ví dụ cách sử dụng 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; }
}
public class PurchTable : BaseEntityTệp InventContext.cs để mô tả một context:
{
[MaxLength(200), MinLength(0)]
public string HeaderText { get; set; }
[MaxLength(200), MinLength(0)]
public string HeaderNode { get; set; }
[Required]
public DateTime TransDate { get; set; }
}
public class InventContext: DbContextThự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.
{
public DbSetPurchTable { 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);
}
}
}
Chúc vui vẻ.
0 blogger:
Đăng nhận xét