Ну, суть в том, что ваш метод GetCustomers
выбирается только из Table1
- я не вижу никакой ссылки на Table2
, где находится ваш столбец Family
......
Вам нужно проверить соединения Linq-to-SQL и узнать, как извлечь данные из объединенной таблицы в ваш набор результатов.
Что-то вроде:
[DataContract]
class JoinedResult
{
[DataMember]
public int Table1ID { get; set; }
[DataMember]
public string Table1Name { get; set; }
[DataMember]
public string Table2Family { get; set; }
}
[OperationContract]
public List<JoinedResult> GetCustomers(int numberToFetch)
{
using (DataClassesDataContext context = new DataClassesDataContext())
{
var q = from t1 in context.Table1
join t2 in context.Table2 on t1.id = t2.fid
select new JoinedResult
{ Table1ID = t1.ID,
Table1Name = t1.Name,
Table2Family = t2.Family };
return q.Take(numberToFetch).ToList();
}
}
и кстати: вы действительно должны сделать numberToFetch
параметром INT! Пусть звонящий сделает преобразование ......
ОБНОВЛЕНИЕ: если вы не хотите явно включать вторую таблицу для запроса, вы можете вместо этого добавить DataLoadOption
в свой контекст:
DataLoadOptions dlo = new DataLoadOptions();
dlo.LoadWith<Table1>(t => t.Table2);
context.LoadOptions = dlo;
В этом случае вы указываете LINQ всегда включать все элементы из Table2
, когда он загружает что-либо из Table1
- это тоже должно работать.