2012-10-17 3 views
-2

목표는 레코드의 기본 키와 일치하는 사용자 입력 ID를 찾아 LINQ를 사용하여 데이터베이스 테이블에서 레코드를 삭제하는 삭제 기능을 만드는 것입니다.데이터베이스 엔터티에 대한 필수 유형을 결정할 수 없습니다.

  • MyDBEntitiesClass이 기능은 검색 대상의 DataTable을 알려줍니다 통과해야한다는 주장이다.

  • IDontKnowWhatType이 유형을 결정하는 데 도움을 요청하고 있습니다.

  • MyPrimaryKey은 MyDBEntitiesClass의 기본 키를 참조하는 항목으로 바꿔야합니다.

  • TestDatabaseEntities은 기존 SQL Server 데이터베이스에서 엔티티 모델을 생성하여 생성 된 연결 문자열의 이름입니다.

public static void DeleteFrom(IDontKnowWhatType MyDBEntitiesClass) 
{ 

var dbEntities = new TestDatabaseEntities(); 

    //Prompt the user for an ID 
    Console.WriteLine("Select ID for deletion."); 

    // save the ID to IDtoMark 
    int IDtoMark = int.Parse(Console.ReadLine()); 
    try 
    { 
     // return a single record that matches IDtoMark 
     MyDbEntitiesClass x = dbEntities.MyDbEntitiesClass.Single(x => x.myPrimaryKey == IDtoMark); 
     //Remove the marked record, and save changes 
     dbEntities.MyDbEntitiesClass.Remove(x); 
     dbEntities.SaveChanges(); 
    } 
    catch(Exception ex) 
    { 
     Console.WriteLine(ex.Message); 
    } 
} 

답변

0

당신은 저장소 패턴을 구현하여이 작업을 수행 할 수 있습니다.

는 당신이 엔티티 프레임 워크를 사용하는 것 같아요. 그 때문에 제네릭 클래스가 있습니다.

public class Repository<T> where T : class 
{ 
    private DbContext dbContext; 
    private DbSet<T> DbSet { get; set } 
    public Repository(dbContext) 
    { 
     this.dbContext = dbContext; 
     this.DbSet = this.dbContext.DbSet<T>(); 
    } 

    public void Delete(int id) 
    { 
     T entity = DbSet.Find(id); 
     DbSet.Remove(entity); 
     dbContext.Save(); 
    } 

} 
+0

당신의 도움에 감사드립니다. 코드 샘플에는 Visual Studio가 수정 한 몇 가지 간단한 문법 오류가 있으며 지금은이를 구현 중입니다. – ArmorCode

관련 문제