#c# #wcf #subsonic #wcf-client #datacontract
#c# #wcf #subsonic #wcf-клиент #datacontract
Вопрос:
Я написал базовую службу WCF, которая использует SubSonic для извлечения данных.
После публикации службы я использую ее в приложении C #. При вызове метода, который использует этот SubSonic запрос, я получаю обратно нужное количество объектов из базы данных, но ни один из них не содержит свойств базы данных и их значений. Похоже, что только дозвуковые свойства.
Дозвуковой DAL содержится в отдельном проекте, на который ссылается проект службы WCF.
Интерфейс службы WCF:
[OperationContract]
GeoLocationCollection GetGeoLocations(long websiteID);
Рабочий метод:
public GeoLocationCollection GetWebsiteGeoLocations(long websiteID)
{
GeoLocationCollection locationsCollection = new Select()
.Where(GeoLocation.Columns.WebsiteID).IsEqualTo(1)
.From(GeoLocation.Schema)
.ExecuteAsCollection<GeoLocationCollection>();
return locationsCollection;
}
Как GeoLocationCollection, так и GeoLocation были автоматически оформлены с помощью [Serializable] .
Служба используется следующим образом:
MyService.MyServiceClient client = new MyService.MyServiceClient();
var result = client.GetWebsiteGeoLocations(1);
foreach (MyService.GeoLocation location in result)
{
// do stuff
}
Итак, еще раз, почему я не вижу ни одного из моих реальных свойств / значений таблицы в location?
Ответ №1:
Для служб WCF требуется атрибут [DataContract] [DataMember], а не [Serializable]. Возможно, это причина, по которой вы не получаете значения атрибутов.
Комментарии:
1. Отлично, спасибо. Теперь я вижу, что предыдущий участник предложил изменить DataContract и DataMember. Я ошибся в своем впечатлении о сериализуемости. Спасибо!