如何在模型从数据库更新后保持实体代码不变?

创建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

回到顶部