Zoeken…


Dynamisch toevoegen van interfaces aan model

Bij het werken met een bestaand model dat vrij groot is en heel vaak wordt geregenereerd in gevallen waar abstractie nodig was, kan het kostbaar zijn om het model met interfaces handmatig opnieuw in te richten. In dergelijke gevallen wilt u misschien wat dynamisch gedrag toevoegen aan het genereren van modellen.

In het volgende voorbeeld wordt getoond hoe automatisch interfaces worden toegevoegd aan klassen met specifieke kolomnamen:

In uw model gaat u naar .tt bestand wijzigen van de EntityClassOpening methode volgt, zal deze add IPolicyNumber interface op entiteiten die hebben POLICY_NO kolom en IUniqueId op UNIQUE_ID

public string EntityClassOpening(EntityType entity)
{
    var stringsToMatch = new Dictionary<string,string> { { "POLICY_NO", "IPolicyNumber" }, { "UNIQUE_ID", "IUniqueId" } };
    return string.Format(
        CultureInfo.InvariantCulture,
        "{0} {1}partial class {2}{3}{4}",
        Accessibility.ForType(entity),
        _code.SpaceAfter(_code.AbstractOption(entity)),
        _code.Escape(entity),
        _code.StringBefore(" : ", _typeMapper.GetTypeName(entity.BaseType)),
        stringsToMatch.Any(o => entity.Properties.Any(n => n.Name == o.Key)) ? " : " + string.Join(", ", stringsToMatch.Join(entity.Properties, l => l.Key, r => r.Name, (l,r) =>  l.Value)) : string.Empty);
}

Dit is een specifiek geval, maar het toont de mogelijkheid om .tt sjablonen te kunnen wijzigen.

XML-documentatie toevoegen aan entiteitsklassen

Op alle gegenereerde modelklassen zijn standaard geen documentatie-opmerkingen toegevoegd. Als u wilt XML-documentatie commentaar te gebruiken voor elke geproduceerde eenheid klassen, vinden dit deel binnen [modelnaam] Tt (modelnaam is actueel EDMX bestandsnaam):

foreach (var entity in typeMapper.GetItemsToGenerate<EntityType>(itemCollection))
{
    fileManager.StartNewFile(entity.Name + ".cs");
    BeginNamespace(code); // used to write model namespace
#>
<#=codeStringGenerator.UsingDirectives(inHeader: false)#> 

U kunt de XML-documentatiereacties toevoegen vóór de regel van UsingDirectives , zoals in het onderstaande voorbeeld:

foreach (var entity in typeMapper.GetItemsToGenerate<EntityType>(itemCollection))
{
    fileManager.StartNewFile(entity.Name + ".cs");
    BeginNamespace(code);
#>
/// <summary>
/// <#=entity.Name#> model entity class.
/// </summary>
<#=codeStringGenerator.UsingDirectives(inHeader: false)#> 

De gegenereerde documentatiecommentaar moet de entiteitsnaam bevatten zoals hieronder aangegeven.

/// <summary>
/// Example model entity class.
/// </summary>
public partial class Example
{
    // model contents
}


Modified text is an extract of the original Stack Overflow Documentation
Licentie onder CC BY-SA 3.0
Niet aangesloten bij Stack Overflow