EntityDataSource / DataQuery - 如何正确使用Include()?

时间:2014-04-08 11:59:19

标签: c# entity-framework

我正在尝试为我设置的EntityDataSource使用Include属性,但我不确定如何遵循这种关系。所以我有一个看起来像这样的DetailsView:

enter image description here

正如你所看到的,那里有一个外键字段。最终我要做的就是拉入记录,以便我可以在编辑时显示不同的字段(名称)和下拉列表。

我的标记非常基础:

<asp:EntityDataSource runat="server" ID="efDataSource" OnContextCreating="On_ContextCreating" EntitySetName="FuelSurcharges" EnableUpdate="true" EnableInsert="true" EnableDelete="true" EnableFlattening="true" AutoPage="true" AutoSort="true" />
   <asp:DetailsView ID="dvSelectedRecord" runat="server" AutoGenerateRows="true" DataSourceID="efDataSource" AutoGenerateInsertButton="true" AutoGenerateEditButton="true" AutoGenerateDeleteButton="true">  
   </asp:DetailsView>

所以我在EntityDataSource上遇到了Include属性,我假设它是我想要使用的。但是我在这个页面上向后查看我的数据是为了绑定目的:

  /// <summary>
/// Represents a Freight Company
/// </summary>
[Table("NetC_EF_FreightCompany")]
public class FreightCompany
{
    /// <summary>
    /// The ID of the Freight Company
    /// </summary>
    [Key]
    public int ID { get; set; }
    public String Name { get; set; }
    public String Description { get; set; }
    public Double CubicToKiloRatio { get; set; }
    public Boolean DeadweightCalculationEnabled { get; set; }
    public Boolean VolumetricWeightCalculationEnabled { get; set; }
    public Boolean LoadingMetreCalculationEnabled { get; set; }
    public Double CargoMeterHeightLookup { get; set; }
    public Double CargoMeterLookup { get; set; }

    /// <summary>
    /// The Fuel Surcharges for this Company
    /// </summary>
    public ICollection<FuelSurcharge> FuelSurcharges { get; set; }
}

/// <summary>
/// Represents a Fuel Surcharge
/// </summary>
[Table("NetC_EF_FuelSurcharge")]
public class FuelSurcharge
{
    /// <summary>
    /// The ID of the Fuel Surcharge
    /// </summary>
    [Key]
    public int ID { get; set; }
    public DateTime? FromDate { get; set; }
    public DateTime? ToDate { get; set; }
    public Double PercentageSurcharge { get; set; }
}

当我没有可以使用的字段时,如何包含FreightCompany(因此我可以使用Name属性) - 但我确实有外键ID?

1 个答案:

答案 0 :(得分:0)

好像你可以使用&#39; Back References&#39;他们解决了这个问题。我更改了FuelSurcharge以包含一个额外的属性:

public FreightCompany FreightCompany { get; set; }

现在我可以在EntityDataSource上添加一个include:

<asp:EntityDataSource runat="server" ID="efDataSource" OnContextCreating="On_ContextCreating" EntitySetName="FuelSurcharges" EnableUpdate="true" EnableInsert="true" EnableDelete="true" EnableFlattening="true" AutoPage="true" AutoSort="true" Include="FreightCompany"/>

并且可以绑定到其他值,如:

<asp:BoundField DataField="FreightCompany.Name" HeaderText="Freight Company" />