簡體   English   中英

實體框架和數據庫列名稱

[英]Entity Framework and database column names

我正在嘗試修改POCO T4模板,以在數據庫中包含與每個屬性對應的列的名稱。 由於遺留的原因,我們的數據庫表是8.3,我們的列最多10個字符,所以事情往往會被取消。 能夠快速查找給定屬性對應的列將是一個很大的幫助。

鑒於此,我不知道如何去做這件事。 我對編輯T4模板的想法很滿意,我只是不知道如何從EdmProperty對象中檢索列名。

誰能指出我正確的方向?

我已經在其他一些答案中討論了這個問題,但我找不到它。 問題是,要獲取此信息,您需要瀏覽映射的MSL部分 - 列映射到屬性的部分。 不幸的是,MSL元數據項的整個API是內部的(我認為未來EF版本的一個目標是公開它)。 如果您有用於類生成的T4模板,則通常使用CSDL - 即實體描述,它僅包含您在EDMX圖和實體屬性窗口中看到的信息。

我不會說這是解決這個問題的最佳方法,但這就是我做到的。 我需要能夠以純文本檢索列名稱以綁定到BoundField asp控件,並且沒有將其烘焙到EF模板中。

所以,我添加了一些代碼,只是加載了“簡單屬性”,即:列名,允許我這樣做。 它為名為“ColumnNames”的“table”對象添加了一個結構體,並將列名稱公開為const字符串。

<#
    if (simpleProperties.Any())
    {
#>
    public struct ColumnName 
    {
  <# 
      foreach (var simpleProperty in simpleProperties)
      {
  #>
      public const string <#= simpleProperty #> = "<#= simpleProperty #>";
  <# 
      }
  #>
  }
<#  }
#>
}

我把它放在T4模板中的這段代碼之前,該模板在解決方案中的edmx文件下生成單個文件:

<#
    EndNamespace(code);
}

這將創建如下所示的代碼:

public partial class JobPosting
{
    public int PositionRowId { get; set; }
    public System.Guid PositionRelatedGuid { get; set; }

    public struct ColumnName 
    {
        public const string PositionRowId = "PositionRowId";
        public const string PositionRelatedGuid = "PositionRelatedGuid";
    }
}

我希望這有幫助。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM