В моей базе данных есть следующие таблицы
Table1: tblAddressType (Id, Name)
Table2: tblAddressDtls (Id, AddressTypeId, Address1)
Мне осталось присоединиться к двум вышеуказанным таблицам, чтобы получить список всех типов адресов и соответствующие детали адреса следующим образом
SQL Query:
select t1.*, t2.*
from tblAddressType t1
left outer join tblAddressDtls t2 on t1.Id = t2.AddressTypeId and t2.Id = 1;
Для приведенных выше таблиц я создал классы сущностей POCO следующим образом:
[Table("tblAddressType ")]
public partial class AddressType
{
[Key]
[Column(Name="ID")]
public int ID { get; set; }
[Required]
[Column(Name = "Name")]
public virtual string Name {get; set;}
[Include]
[Association("AddressTypeAddress", "ID", "AddressTypeId")]
public virtual ICollection<Address> Addresses { get; set; }
}
[Table("tblAddress", SchemaName="dbo")]
public class Address
{
[Column(Name="ID")]
public int ID { get; set; }
[Column(Name = "AddressTypeId")]
public int? AddressTypeId{ get; set; }
[Column(Name = "Address1")]
public string Address1{ get; set; }
[Include]
[Association("AddressTypeAddress", "AddressTypeId", "ID", IsForeignKey = true)]
public virtual AddressType AddressType { get; set; }
}
и, чтобы получить данные, как показано в запросе sql выше, я написал следующий запрос LINQ в своем сервисном коде, и этозапрос возвращает мне данные по мере необходимости:
var qry = (from p in dbContext.AddressTypes
join pa in (from t in dbContext.Addresses
where t.ID == 1 select t)
on p.ID equals pa.AddressTypeId into ppa
from t in ppa.DefaultIfEmpty()
select t).AsQueryable();
Теперь я хочу написать метод доменной службы с именем «GetAddressById (int addressId)», который должен вернуть мне соответствующий объект Address вместе со списком объектов AddressType какмне нужно привязать список объектов AddressType к выпадающему списку на экране добавления / редактирования адреса.
I wanted to include and fetch list of "AddressType" objects data at the time of
fetching Address object data itself to avoid round-trip to server
in my silverlight client app.
Пожалуйста, предложите мне наилучший способ достижения этой функциональности?