如何在模型从数据库更新后保持实体代码不变?
创建Web Service当我使用Entity Framework。 我有一个Entity类延伸DBContext。如何在模型从数据库更新后保持实体代码不变?
在这个类我写了一个逻辑每当context创建时间来处理密码解密:
namespace ePdfExtractor.Entity public partial class MyDBEntities : DbContext 
{ 
    public MyDBEntities() 
     : base() 
    { 
    } 
    protected override void OnModelCreating(DbModelBuilder modelBuilder) 
    { 
     throw new UnintentionalCodeFirstException(); 
    } 
    public virtual DbSet<MyTable1> MyTable1 { get; set; } 
    public virtual DbSet<UserSvc> UserSvcs { get; set; } 
} 
这是我的实体另一部分类:
namespace ePdfExtractor.Entity public partial class MyDBEntities 
{ 
    public MyDBEntities(): 
      base(GetDecrptString()) 
    { 
    } 
    public static string DecrypConnectionString(string connectionString) 
    { 
     return EncDec.EVODecrypt(connectionString); 
    } 
    public static string EncodeConnectionString(string connectionString) 
    { 
     return EncDec.EVOEncrypt(connectionString); 
    } 
    private static string GetDecrptString() 
    { 
     string connString = ConfigurationManager.ConnectionStrings["MyEntitiesConnection"].ConnectionString; 
     return EncDec.EVODecrypt(connString); 
    } 
} 
每当我需要查询表格,我创建MyDBEntities的新实例:
public partial class UserSvc { 
    public static UserSvc Authenticate(string userName, string password) 
    { 
     using (var ctx = new MyDBEntities()) 
     { 
      UserSvc userObj = ctx.UserSvcs.FirstOrDefault(u => u.UserName == userName && u.Password == password && u.Active); 
      return userObj; 
     } 
    } 
} 
当一个构造函数的定义创建一个新的UserSvc表该类得到再生和我的解密逻辑在一起后更新从数据库模型被删除。
我如何能坚持,所以,我每次生成模型时,这种类只被新的内容更新。这有可能吗?
回答:
您需要为部分类不同的签名:
namespace ePdfExtractor.Entity public partial class MyDBEntities 
{ 
    public MyDBEntities(string connectString): 
      base(GetDecrptString(connectString)) 
    { 
    } 
    public static string EVOConnectionString(string connectionString) 
    { 
     return ConfigurationManager.ConnectionStrings["MyEntitiesConnection"].ConnectionString; 
    } 
    public static string DecrypConnectionString(string connectionString) 
    { 
     return EncDec.EVODecrypt(connectionString); 
    } 
    public static string EncodeConnectionString(string connectionString) 
    { 
     return EncDec.EVOEncrypt(connectionString); 
    } 
    private static string GetDecrptString(string connString) 
    { 
     return EncDec.EVODecrypt(connString); 
    } 
} 
然后再加上新的签名称之为:
using (var ctx = new MyDBEntities(MyDBEntities.EVOConnectionString)) { 
    UserSvc userObj = ctx.UserSvcs.FirstOrDefault(u => u.UserName == userName && u.Password == password && u.Active); 
    return userObj; 
} 
你也做一个黑客,迫使部分:
namespace ePdfExtractor.Entity public partial class MyDBEntities 
{ 
    public MyDBEntities(string dummy): 
      base(GetDecrptString()) 
    { 
    } 
    public static string DecrypConnectionString(string connectionString) 
    { 
     return EncDec.EVODecrypt(connectionString); 
    } 
    public static string EncodeConnectionString(string connectionString) 
    { 
     return EncDec.EVOEncrypt(connectionString); 
    } 
    private static string GetDecrptString() 
    { 
     string connString = ConfigurationManager.ConnectionStrings["MyEntitiesConnection"].ConnectionString; 
     return EncDec.EVODecrypt(connString); 
    } 
} 
然后再加上新的签名称之为:
using (var ctx = new MyDBEntities("Dummy")) { 
    UserSvc userObj = ctx.UserSvcs.FirstOrDefault(u => u.UserName == userName && u.Password == password && u.Active); 
    return userObj; 
} 
以上是 如何在模型从数据库更新后保持实体代码不变? 的全部内容, 来源链接: utcz.com/qa/267053.html

