2012-12-27 25 views
10

मैं POCO t4 टेम्पलेट जनरेटर कि वी.एस. 2012 के साथ आता है मैं कुछ बदलाव किए हैं Entity.Name शामिल करने के लिए उपयोग कर रहा हूँ, लेकिन मैं यह पता लगाने में सक्षम नहीं कर रहा हूँ प्राथमिक कुंजी।एक संपत्ति ढूँढना POCO खाका t4 जनरेटर में प्राथमिक कुंजी है

public string EntityClassOpening(EntityType entity) 
{ 
    return string.Format(
     CultureInfo.InvariantCulture, 
     "{0} {1}partial class {2}{3}<{4},{5}>{6}", 
     Accessibility.ForType(entity), 
     _code.SpaceAfter(_code.AbstractOption(entity)), 
     _code.Escape(entity), 
     ": EntityBase", 
     entity.Name, 
     entity.Name, 
     _code.StringBefore(" ", _typeMapper.GetTypeName(entity.BaseType))); 
} 

मुझे EntityType ऑब्जेक्ट पदानुक्रम से प्राथमिक कुंजी खोजने का कोई तरीका नहीं मिला है। यह गुणों का खुलासा करता है लेकिन संपत्ति में यह कहने के लिए कुछ भी नहीं है कि यह प्राथमिक कुंजी है।

किसी भी मदद की सराहना की।

उत्तर

13

बस अगर कोई भी आरआईए सेवाओं की सामग्री माइग्रेट करते समय ऐसा करने का प्रयास कर रहा है, तो मैं VS2013 में मानक dbcontext टेम्पलेट का उपयोग कर रहा हूं और इकाइयों के टेम्पलेट में दो चीजें जोड़ दी हैं।

पहले आप की जरूरत:

using System.ComponentModel.DataAnnotations; 

मैं यह सिर्फ // ---- शीर्ष के निकट ब्लॉक के नीचे रखा।

तब मैं कोड का सा है कि इस तरह दिखता है संशोधित। बस पहले नाम की खोज करें। मेरा परिवर्तन ef.IsKey है ... और कुंजी() विशेषता जोड़ रहा है।

var simpleProperties = typeMapper.GetSimpleProperties(entity); 
    if (simpleProperties.Any()) 
    { 
     foreach (var edmProperty in simpleProperties) 
     { 
#> 
<#if (ef.IsKey(edmProperty)) 
    {#>  [Key()] 
    <#}#> 
    <#=codeStringGenerator.Property(edmProperty)#> 
<# 
     } 
    } 
+0

मैं खोजने रहा है कि जो कोई भी कुंजी परिभाषित, टेम्पलेट एकाधिक स्तंभों (सभी नहीं) पर IsKey के लिए सच लौट रहा है एक मेज पर। मुझे वहां क्या चल रहा है, इस पर एक नजर डालने की ज़रूरत है, लेकिन क्या किसी के पास कोई अंतर्दृष्टि है? –

9

उपयोग EntityType.KeyMembers संपत्ति गुण प्राथमिक कुंजी के होते हैं पाने के लिए।

+1

इस मदद की। मैं अपने उपयोग के लिए EntityType.KeyProperties का उपयोग कर समाप्त हो गया। धन्यवाद! – TravisWhidden

+0

@TravisWhidden क्या आप अपना कोड साझा कर सकते हैं जो आपने EntityType.KeyProperties का उपयोग करके किया था? धन्यवाद! –