Suche…


Schnittstellen dynamisch zum Modell hinzufügen

Wenn Sie mit einem vorhandenen Modell arbeiten, das recht groß ist und in Fällen, in denen eine Abstraktion erforderlich ist, häufig regeneriert wird, ist es möglicherweise kostspielig, das Modell mit Schnittstellen manuell zu überarbeiten. In solchen Fällen möchten Sie möglicherweise zur Modellgenerierung dynamisches Verhalten hinzufügen.

Das folgende Beispiel zeigt, wie automatisch Schnittstellen zu Klassen hinzugefügt werden, die bestimmte Spaltennamen haben:

In Ihrem Modell gehen .tt Datei ändern Sie die EntityClassOpening Methode in folgenden Weise wird dieser Add IPolicyNumber Schnittstelle auf Unternehmen , die haben POLICY_NO Spalt und IUniqueId auf 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);
}

Dies ist ein spezieller Fall, aber es zeigt die Möglichkeit, .tt Vorlagen ändern zu können.

XML-Dokumentation zu Entitätsklassen hinzufügen

In jeder generierten Modellklasse werden standardmäßig keine Dokumentationskommentare hinzugefügt. Wenn Sie XML-Dokumentationskommentare für alle generierten Entitätsklassen verwenden möchten, finden Sie diesen Teil in [modelname] .tt ( modelname ist der aktuelle EDMX-Dateiname):

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

Sie können die XML-Dokumentationskommentare vor der Zeile UsingDirectives , wie im folgenden Beispiel gezeigt:

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

Der generierte Dokumentationskommentar sollte wie nachstehend angegeben den Namen der Entität enthalten.

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


Modified text is an extract of the original Stack Overflow Documentation
Lizenziert unter CC BY-SA 3.0
Nicht angeschlossen an Stack Overflow