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
테이블을 생성 한 후 데이터베이스에서 모델을 업데이트 할 때이 클래스가 생성되고 생성자의 정의와 함께 해독 논리가 삭제됩니다.
어떻게 유지할 수 있습니까? 모델을 재생성 할 때마다이 클래스는 새 콘텐츠로만 업데이트됩니다. 가능한가요? 새로운 서명 호출 다음
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;
}
또한 해킹이 부분을 강제로 할 수있는 :
을
[부분 클래스] (https://docs.microsoft.com/en-us/dotnet/csharp/programming-guide/classes-and-structs/partial-classes-and-methods)로 생성됩니다. 그래서 거기에 논리를 옮기세요. –
내 프로젝트에서 단지 하나의 부분 클래스'MyDBEntities' 만 볼 수 있습니다. – Yev
오른쪽 생성 된 코드를 보유하기 위해 다른 클래스를 추가해야합니다. https://stackoverflow.com/questions/42160958/how-to-extend-an-entity-framework-6-1-3-generated-class –