2 개의 SQL 테이블이 매우 유사합니다. 외래 키만 각 테이블마다 다릅니다.당신은 2 개의 매우 유사한 SQL 테이블에 대한 서비스 메소드를 어떻게 처리합니까?
TemplateUnit table:
Id (PK)
ParentId
Name
TemplateId (FK)
TestplanUnit table:
Id (PK)
ParentId
Name
TestplanId (FK)
나는 거의 같은 내용이이 개 테이블에 대한 이동 - 바로 FK가 다르다 - 당신은 정말 당신의 서비스와의 dataProvider에 CRUD 방법의 중복을 만들려면 어떻게해야합니까 (ado.net 순수한 사용)?
서비스 및 dataprovider 클래스에서 한 가지 종류의 가져 오기/추가/업데이트/삭제 방법 만 사용되도록하려면 어떻게해야합니까?
이 지금까지 내 솔루션입니다 : 나는 또한
가UPDATE가 ... 중복 단위 테스트를 만들고 싶어하지 않는 BLL에서
public class Unit
{
public string Name { get; set; }
public int Id { get; set; }
public Nullable<int> ParentId { get; set; }
public int TemplateId { get; set; }
public bool IsLazy { get; set; }
}
public class UnitDTO
{
public UnitDTO(UnitMode mode)
{
switch (mode)
{
case UnitMode.Template:
this.ForeinKeyName = "TemplateId";
this.TableName = "TemplateUnit";
break;
case UnitMode.Testplan:
this.ForeinKeyName = "TestplanId";
this.TableName = "TestplanUnit";
break;
}
UnitBO = new Unit();
}
public string TableName { get; private set; }
public string ForeinKeyName { get; private set; }
public Unit UnitBO { get; private set; }
}
public enum UnitMode
{
Template = 0,
Testplan = 1,
}
내 가져 오기/추가/삭제 방법과 DAL은 얻을 필요한 모든 정보를 가진 UnitDTO 객체.
단 하나의 단점은 -이 프로젝트가 팀에서 수행되는 경우 - UnitDTO를 생성하고 각 CRUD 메소드에 대한 BLL로 전달할 때 어떤 변수가 DAL에서 사용되거나 필요하다는 것을 알아야한다는 것입니다.
당신은 어떻게 생각하십니까?
코드가 더 이상 없으면 항상 중복 코드가됩니다. 하나의 testplanUnitService를 변경하면 다른 하나도 변경해야합니다. 두 테이블 모두 동일한 데이터를 저장하지만 차이점은 외래 키입니다. 하나의 단위 테이블은 템플릿의 단위를 저장합니다. 테스트 계획은 템플릿의 모든 유닛을 복사하지만 다른 외래 키로 인해 다른 유닛 테이블에 저장됩니다. – Elisabeth