Entity Framework
एंटिटी-फ्रेमवर्क में .t4 टेम्प्लेट
खोज…
गतिशील रूप से मॉडल में इंटरफेस जोड़ना
जब मौजूदा मॉडल के साथ काम करना जो काफी बड़ा है और ऐसे मामलों में काफी बार पुनर्जीवित किया जा रहा है, जहां एब्सट्रैक्शन की आवश्यकता होती है, तो इंटरफेस के साथ मॉडल को पुन: लोड करने के लिए मैन्युअल रूप से जाना महंगा हो सकता है। ऐसे मामलों में कोई मॉडल निर्माण के लिए कुछ गतिशील व्यवहार जोड़ना चाह सकता है।
निम्न उदाहरण दिखाएगा कि विशिष्ट कॉलम नाम वाले वर्गों पर स्वचालित रूप से इंटरफ़ेस कैसे जोड़ा जाता है:
अपने मॉडल में .tt
फ़ाइल को निम्नलिखित तरीके से EntityClassOpening
विधि में संशोधित करें, यह उन संस्थाओं पर IPolicyNumber
इंटरफ़ेस IPolicyNumber
जिनमें POLICY_NO
कॉलम है, और IUniqueId
पर 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);
}
यह एक विशिष्ट मामला है लेकिन यह .tt
टेम्पलेट्स को संशोधित करने में सक्षम होने की शक्ति दिखाता है।
एंटिटी क्लासेस में XML डॉक्युमेंटेशन जोड़ना
प्रत्येक उत्पन्न मॉडल कक्षाओं पर डिफ़ॉल्ट रूप से कोई दस्तावेजी टिप्पणी नहीं जोड़ी जाती है। आप हर उत्पन्न इकाई वर्गों के लिए एक्सएमएल प्रलेखन टिप्पणियों का उपयोग करना चाहते हैं, इस भाग के अंदर [modelname] .tt (वर्तमान edmx फ़ाइल नाम modelname है) लगता है:
foreach (var entity in typeMapper.GetItemsToGenerate<EntityType>(itemCollection))
{
fileManager.StartNewFile(entity.Name + ".cs");
BeginNamespace(code); // used to write model namespace
#>
<#=codeStringGenerator.UsingDirectives(inHeader: false)#>
नीचे दिए उदाहरण में दिखाए गए अनुसार UsingDirectives
करने से पहले आप XML प्रलेखन टिप्पणियाँ जोड़ सकते हैं:
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)#>
उत्पन्न प्रलेखन टिप्पणी में नीचे दिए गए अनुसार इकाई का नाम शामिल होना चाहिए।
/// <summary>
/// Example model entity class.
/// </summary>
public partial class Example
{
// model contents
}