데이터베이스 테이블 (Person 테이블)에 매핑 된 클래스 (Entity 우리가 호출 한) 명명 된 사람이 있습니다. 이 테이블의 레코드에는 PK를 제외한 모든 필드에 Null 값이 포함될 수 있습니다.null 또는 DBnull.value와 비교할 수없는 오류가있는 객체를 처리하십시오.
이것은 우리가 우리의 사람 엔티티를 정의하는 방법에 대한 간략한에 있습니다
...
private System.DateTime _BirthDate;
[DisplayName("Birth Date")]
[Category("Column")]
public System.DateTime BirthDate
{
get
{
try { return _BirthDate; }
catch (System.Exception err)
{ throw new Exception("Error getting BirthDate", err); }
}
set
{
try { _BirthDate = value; }
catch (System.Exception err)
{ throw new Exception("Error setting BirthDate", err); }
}
}
...
내가 사람의 목록을 얻을 때 DB에 null이 있었다
var dsPersons = DataHelper.personTabelAdapter.GetFilteredPersons(nationalNo, name);
그 필드 것을 갖는 문제는 예외 그래서 나는 null 또는 심지어 DBNull.Value, 디버그에서 내 코드의 다음 이미지를 봐 수 없다
null이되어 있는지 확인하여 새 객체 필드를 채우거나 채울 것을 결정할 수 있습니다.
여기에 예외의 세부 사항은 내가
System.Web.Services.Protocols.SoapException: Server was unable to process request. ---> System.Data.StrongTypingException: The value for column 'BirthDateFa' in table 'Person' is DBNull. ---> System.InvalidCastException: Unable to cast object of type 'System.DBNull' to type 'System.String'.
at EcomService.Data.EcomDS.PersonRow.get_BirthDateFa() in c:\Projects\Project\EcomForms\EcomService\EcomService\Data\EcomDS.Designer.cs:line 30607
--- End of inner exception stack trace ---
at EcomService.Data.EcomDS.PersonRow.get_BirthDateFa() in c:\Projects\Project\EcomForms\EcomService\EcomService\Data\EcomDS.Designer.cs:line 30610
at EcomService.Classes.Entities.Person.GetFilteredPersons(String nationalNo, String name) in c:\Projects\Project\EcomForms\EcomService\EcomService\Classes\Entities\Person.cs:line 898
at EcomService.EService.GetFilteredPersons(String nationalNo, String name) in c:\Projects\Project\EcomForms\EcomService\EcomService\EService.asmx.cs:line 172
--- End of inner exception stack trace ---
를 얻을 수있어 문제는이 방법
static public List<Person> GetFilteredPersons(string nationalNo, string name)
{
List<Person> persons = new List<Person>();
var dsPersons = DataHelper.personTabelAdapter.GetFilteredPersons(nationalNo, name);
foreach (var dsPerson in dsPersons)
{
Person person = new Person();
person.BirthDateFa = dsPerson.BirthDateFa;
//I don't know how to deal with the exceptions here
.... //other fields
persons.Add(person);
}
return persons;
}
난 정말이 작품에 붙어에게 호출 내 웹 방법
[WebMethod]
public List<Person> GetFilteredPersons(string nationalNo, string name)
{
return Person.GetFilteredPersons(nationalNo, name);
}
입니다. 귀하의 답변은 친절하게 환영받을 것입니다.
는, 단지 그것을 개성'System.Exception'에 싸여 다시 발생하는? 그것은 단지 물건을 가리는 코드를 추가하는 것입니다. 그 외에, 당신이 우리에게 예외가 무엇인지 말해줘야합니다. StrongTypingException을 보여주는 스크린 샷을 보여 줬지만 특정 예외 하나의 세부 정보 *를 살펴 봐야합니다. –
Hello Jon. 나는 예외의 세부 사항을 1 분 안에 추가 할 것이다. –
@JonSkeet 세부 정보가 추가되었습니다. –