Я использую entity-framework6 с ядром .net.У меня были некоторые сложные вычисления, чтобы получить некоторые результаты из базы данных, поэтому я создал хранимую процедуру в базе данных, которая дает мне список свойств, как на выходе.Я успешно связал данные с Property Object из базы данных результата.как показано ниже
Хранимая процедура
ALTER PROCEDURE [dbo].[PublicPropertySearch]
@Latitude float,
@Longitude float,
@Radius float = NULL,
@HavePets bit = NULL,
@FullBathroomCount int = NULL,
@BedroomCount int = NULL,
@RentPriceFrom int = NULL,
@RentPriceTo int = NULL,
@PropertyTypeId int = NULL
AS
BEGIN
declare @Geography geography = GEOGRAPHY::Point(@Latitude , @Longitude , 4326);
SET NOCOUNT ON;
select top 50 * from dbo.Property p
--inner join dbo.PropertyFile f on f.PropertyId = p.PropertyId and f.IsPhoto = 1
where GeoLogic.STDistance(@Geography)/1609.344 < @Radius
and (@HavePets is null or p.HavePets = @HavePets)
and (@FullBathroomCount is null or p.FullBathroomCount = @FullBathroomCount)
and (@BedroomCount is null or p.BedroomCount = @BedroomCount)
and (@RentPriceFrom is null or p.ExpectedRentalPrice > @RentPriceFrom)
and (@RentPriceTo is null or p.ExpectedRentalPrice < @RentPriceTo)
and (@PropertyTypeId is null or p.PropertyTypeId = @PropertyTypeId)
--EXEC PublicPropertySearch @Latitude=28.609255,@Longitude=-81.250135,@Radius=5
END
Код для привязки результата с сущностью
var Properties = db.Database.SqlQuery<PublicPropertySearchResult>("exec PublicPropertySearch @Latitude, @Longitude, @Radius, @HavePets, @FullBathroomCount, @BedroomCount, @RentPriceFrom, @RentPriceTo, @PropertyTypeId", sp.ToArray()).ToList();
вот моймодель свойства
class PublicPropertySearchResult
{
public int PropertyId { get; set; }
public string Title { get; set; }
public string StreetAddress { get; set; }
public string Description { get; set; }
public string Address { get; set; }
public string City { get; set; }
public int BedroomCount { get; set; }
public double Latitude { get; set; }
public double Longitude { get; set; }
public string State { get; set; }
public double ExpectedRentalPrice { get; set; }
public string Country { get; set; }
public string Area { get; set; }
public string AreaUnit { get; set; }
public int FullBathroomCount { get; set; }
public string LandlordCurrency { get; set; }
public string ZipCode { get; set; }
public int PropertyTypeId { get; set; }
}
Это вывод моей хранимой процедуры
PropertyId Title Description Address StreetAddress City State Country ZipCode Latitude Longitude HideStreetAddress PropertyTypeId ListingTypeId Area AreaUnit BedroomCount FullBathroomCount HalfBathroomCount Laundry IsFurnished HasParking SitePaymentEnabled TotalTenantsLiving ExpectedRentalPrice HavePets
163 3 Bed With Parking Features:(Assigned,Boat,Covered) Flooring: (Carpet,Ceramic Tile) NULL NULL CASSELBERRY NULL US 32707 28.636128 -81.320118 1 1 6 2811 NULL 3 3 0 Upper Level 0 1 NULL NULL 220000 1
234 4 Bed With Parking Features:(Other) Flooring: (Porcelain Tile) NULL NULL WINTER PARK NULL US 32789 28.599719 -81.331453 1 2 6 4715 NULL 4 5 1 0 1 NULL NULL 1190900 0
448 3 Bed Flooring: (Terrazzo) NULL NULL ORLANDO NULL US 32817 28.609255 -81.250135 1 2 6 2016 NULL 3 2 0 Inside,Laundry Closet 0 0 NULL NULL 415000 1
515 3 Bed Flooring: (Carpet,Ceramic Tile) NULL NULL MAITLAND NULL US 32751 28.630359 -81.320365 1 3 6 NULL NULL 3 2 1 Laundry Closet,Upper Level 0 0 NULL NULL 269900 1
из этого кода. Я получаю только объект свойства из таблицы свойств. Теперь я также хочу связать объект Files сТаблица PropertyFiles в базе данных (существует связь между PropertyFiles и Property таблицами в базе данных).
Мой вопрос заключается в том, какой тип вывода требуется из базы данных для привязки объекта PropertyFilesтакже.в сущности, указанной ниже
class PublicPropertySearchResult
{
public int PropertyId { get; set; }
public string Title { get; set; }
public string StreetAddress { get; set; }
public string Description { get; set; }
public string Address { get; set; }
public string City { get; set; }
public int BedroomCount { get; set; }
public double Latitude { get; set; }
public double Longitude { get; set; }
public string State { get; set; }
public double ExpectedRentalPrice { get; set; }
public string Country { get; set; }
public string Area { get; set; }
public string AreaUnit { get; set; }
public int FullBathroomCount { get; set; }
public string LandlordCurrency { get; set; }
public string ZipCode { get; set; }
public int PropertyTypeId { get; set; }
public virtual ICollection<PropertySearchFile> Files { get; set; }
}
public class PropertySearchFile
{
public int PropertyFileId { get; set; }
public string FileUrl { get; set; }
public string FileName { get; set; }
public virtual PublicPropertySearchResult Property { get; set; }
}