EF4 LINQ Include(string) alternative to hard-coded string?

前端 未结 7 2299
借酒劲吻你
借酒劲吻你 2020-12-29 11:13

Is there any alternative to this:

Organizations.Include(\"Assets\").Where(o => o.Id == id).Single()

I would like to see something like:<

7条回答
  •  爱一瞬间的悲伤
    2020-12-29 11:21

    Another option is to include an internal partial class inside your class using the TT template.

    T4 code:

    <#
        region.Begin("Member Constants");
    #>
       public partial class <#=code.Escape(entity)#>Members
       {
    <#
        foreach (EdmProperty edmProperty in entity.Properties.Where(p => p.TypeUsage.EdmType is PrimitiveType && p.DeclaringType == entity))
        {
            bool isForeignKey = entity.NavigationProperties.Any(np=>np.GetDependentProperties().Contains(edmProperty));
            bool isDefaultValueDefinedInModel = (edmProperty.DefaultValue != null);
            bool generateAutomaticProperty = false;
            #>
            public const string <#=code.Escape(edmProperty)#> = "<#=code.Escape(edmProperty)#>";
            <#
        }
        #>
        }
        <#
        region.End();
    #>
    

    Which will produce something like:

        #region Member Constants
       public partial class ContactMembers
       {
            public const string ID = "ID";
                    public const string OriginalSourceID = "OriginalSourceID";
                    public const string EnabledInd = "EnabledInd";
                    public const string EffectiveDTM = "EffectiveDTM";
                    public const string EndDTM = "EndDTM";
                    public const string EnterDTM = "EnterDTM";
                    public const string EnterUserID = "EnterUserID";
                    public const string LastChgDTM = "LastChgDTM";
                    public const string LastChgUserID = "LastChgUserID";
                }
    
        #endregion
    

提交回复
热议问题