Ricerca…


Aggiunta dinamica di interfacce al modello

Quando si lavora con un modello esistente che è abbastanza grande e viene rigenerato abbastanza spesso nei casi in cui è necessaria l'astrazione, potrebbe essere costoso andare in giro a ridisegnare il modello con le interfacce manualmente. In questi casi si potrebbe voler aggiungere un comportamento dinamico alla generazione del modello.

L'esempio seguente mostrerà come aggiungere automaticamente interfacce su classi che hanno nomi di colonne specifici:

Nel vostro modello di andare a .tt file di modificare EntityClassOpening metodo nella seguente maniera, questo aggiungerà IPolicyNumber interfaccia su entità che hanno POLICY_NO colonna e IUniqueId su 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);
}

Questo è un caso specifico ma mostra un potere di essere in grado di modificare i modelli .tt .

Aggiunta della documentazione XML alle classi di entità

Su ogni classe di modello generata non ci sono commenti di documentazione aggiunti di default. Se si desidera utilizzare i commenti della documentazione XML per ogni classe di entità generata, trovare questa parte all'interno di [nome modello] .tt (nome modello è il nome file EDMX corrente):

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

È possibile aggiungere i commenti della documentazione XML prima UsingDirectives riga UsingDirectives come mostrato nell'esempio seguente:

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)#> 

Il commento della documentazione generata deve includere il nome dell'entità come indicato di seguito.

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


Modified text is an extract of the original Stack Overflow Documentation
Autorizzato sotto CC BY-SA 3.0
Non affiliato con Stack Overflow