0
Web Service
を作成するときにEntity Framework
を使用しています。 私はEntity
クラスを延長しています。DBContext
です。モデルをデータベースから更新した後、エンティティコードを変更しないでおく方法
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);
}
}
たびに私は:
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; }
}
は、これは私のエンティティ別の部分クラスである:私はcontext
が作成されるたびに、パスワードの解読を処理するためのロジックを書かれている。このクラスでは
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
テーブルを作成した後にデータベースからモデルを更新すると、このクラスが再生成され、コンストラクタの定義とともに解読ロジックが削除されます。
私はモデルを再生成するたびにこのメソッドを永続化できます。したがって、このクラスは新しいコンテンツでのみ更新されます。それは可能ですか?
[部分クラス](https://docs.microsoft.com/en-us/dotnet/csharp/programming-guide/classes-and-structs/partial-classes-and-methods)として生成されます。あなたのロジックをそこに移してください。 –
私のプロジェクトでは、部分クラス「MyDBEntities」が1つしか表示されません。 – Yev
右に、生成したくないコードを保持するために別のクラスを追加する必要があります。 https://stackoverflow.com/questions/42160958/how-to-extend-anentity-framework-6-1-3-generated-class –