0
public void Save(CompanyContact entityToSave)
{
try
{
var saveEntity = (from cc in db.CompanyContacts
where cc.CompanyContactId == entityToSave.CompanyContactId
select cc).SingleOrDefault();
if (saveEntity == null)
{
//INSERT logic
entityToSave.CreatedById = new CompanyPersonRepository().GetCompanyPerson(DataContext.Default.LoginUsername).CompanyPersonId;
entityToSave.ModifiedById = entityToSave.CreatedById;
db.CompanyContacts.InsertOnSubmit(entityToSave);
db.CompanyContacts.Context.SubmitChanges();
}
else
{
//UPDATE logic
saveEntity.ModifiedById = new CompanyPersonRepository().GetCompanyPerson(DataContext.Default.LoginUsername).CompanyPersonId;
saveEntity.CompanyId = entityToSave.Company.CompanyId;
saveEntity.FirstName = entityToSave.FirstName;
saveEntity.LastName = entityToSave.LastName;
saveEntity.CompanyContactTypeId = entityToSave.CompanyContactTypeId;
db.CompanyContacts.Context.SubmitChanges();
}
...
그렇지 않은 경우 몇 가지 의견을 제공해 주시겠습니까? 아니면 올바른 경로에 있지 않은 경우 LINQ 기능을 작성하는 더 좋은 방법을 제공 할 수 있습니까?
감사합니다 ... 그래서 당신이 나를 위해 몇 가지 문제에 도움이 되거 수 있기를 바랍니다이 정말 새로운 여전히 이니 는 데이터베이스 규칙의 위반이있는 경우 어떻게해야합니까? 내 질문은 여기에 게시 대답 때이 문제를 확인 : http://stackoverflow.com/questions/2300159/wpf-binding-issue-unique-constraint-violation-on-update-how-to-reject-changes 데이터베이스 규칙 위반시 SqlException 및 Refresh 개체 컬렉션을 catch 할 필요가 없도록 LINQ에 제공 할 수있는 설정 값이 있습니까? DB 규칙을 catch하고 처리 할 코드를 작성해야하는 것처럼 보입니다. 위반 ... – Skyguard
헤이 글쎄 내가 과거에 한 일은 각 LINQ 열에 [Column()] 정의 (ColumnAttribute 유형)가 있으므로 리플렉션을 사용하여 필드를 당겨 길이, 유형 , null 허용 여부 등 ... 해당 경로로 이동하고 싶지 않은 경우 해당 오류의 사용자를 저장하고 플래그를 지정하기 전에 사용자 정의 유효성 검사를 설정할 수 있습니다. 그 외, 예, 예외를 잡아야합니다. 내가하는 일은 그 요청만을위한 컨텍스트를 생성하고, 오류가 발생하면 저장을 시도하고, 사용자에게 알리고 컨텍스트가 종료되도록하십시오. –
계속 ... 그런 식으로, 다시 저장하려면 개체를 재구성하고 중단 한 부분에서 작업하십시오. 결국 양식에는 여전히 기본 데이터가 있습니다. –