Programim dhe zhvillim, javascript, python, php, html

Gabim në skela MVC për çelësin e përbërë me kodin EF 4.5 së pari

Unë jam duke u përpjekur të kuptoj se si ta bëj Skela MVC të punojë me çelësin e përbërë/kompleks.

Unë kam tabelën e mëposhtme:

public class Data
{
    [Key, Column(Order = 0)]
    [ForeignKey("Note")]
    [Display(Name = "Note id")]
    public int NoteId { get; set; }

    [Key, Column(Order = 1)]
    [ForeignKey("Member")]
    [Display(Name = "Member id")]
    public int MemberId { get; set; }

    [Display(Name = "Description")]
    public string Description { get; set; }

    [Display(Name = "Note")]
    public virtual Note Note { get; set; }

    [Display(Name = "Member")]
    public virtual Member Member { get; set; }
}

Kur ekzekutoj linjën për skela:

Scaffold Controller Data -Repository

Unë marr gabimin e mëposhtëm:

Get-PrimaryKey : Cannot find primary key property for type
Pro.Web.Models.Data'. Multiple properties appear to be 
                        primary keys: NoteId, MemberId

Cila mund të jetë zgjidhja për këtë problem? Unë përdor Visual Studio 2012.

Faleminderit.


  • Çfarë mjeti skele përdorni? A është ai nga Steven Sanderson? 26.03.2013
  • Po, MvcScaffolding nga Steve Sanderson. E kam instaluar nëpërmjet NuGet. 26.03.2013

Përgjigjet:


1

Klasa PrimaryKeyLocation nën hapësirën e emrave T4Scaffolding.Core.PrimaryKeyLocators ka një listë të ndërfaqeve IPrimaryKeyLocator që janë implementuar në vetë skedarin PrimaryKeyLocation.cs.

Duke lexuar pesë implementimet e disponueshme, mund të thuhet se kodi juaj do të bjerë në zbatimin KeyAttributePropertyLocator duke i kthyer të dy anëtarët e shënuar me atributin [Key], por GetPrimaryKeyCmdlet.cs që drejtohet nga motori T4 dhe që thërret klasën PrimaryKeyLocation ka zbatimin e mëposhtëm:

switch (primaryKeyProperties.Count)
{
    case 0:
      // Code when no key is found
    case 1:
      // Code when one key is found
    default:
      // Code when more than one key is found
      WriteError(string.Format("Cannot find primary key property for type '{0}'. 
                 Multiple properties appear to be primary keys: {1}",
                   foundClass.FullName, primaryKeyPropertyNames));
}

Prandaj, duke qenë se deklarata switch nuk merret me më shumë se një çelës, çelësat e përbërë nuk mbështeten. Një mënyrë për të dalë nga kjo është zbatimi i rastit për çelësat e përbërë, por unë nuk do t'i dija implikimet e kësaj në vetë shabllonet t4.

Kodi burimor për mjetin skele.

26.03.2013
  • Faleminderit. Kisha frikë se diçka e tillë do të ishte problem. Pra, zgjidhja e vetme do të ishte të bëni gjithçka me dorë. 26.03.2013
  • Epo, një mënyrë tjetër për të zgjidhur këtë është të simuloni vetëm një çelës (hiqni çelësin nga atributi i dytë) vetëm për të krijuar kontrolluesin dhe pamjet tuaja dhe më pas vazhdoni me modifikimin e këtyre skedarëve, në vend që të krijoni të gjithë nga e para. 26.03.2013
  • Materiale të reja

    Masterclass Coroutines: Kapitulli-3: Anulimi i korutinave dhe trajtimi i përjashtimeve.
    Mirë se vini në udhëzuesin gjithëpërfshirës mbi Kotlin Coroutines! Në këtë seri artikujsh, unë do t'ju çoj në një udhëtim magjepsës, duke filluar nga bazat dhe gradualisht duke u thelluar në..

    Faketojeni derisa ta arrini me të dhënat false
    A e gjeni ndonjëherë veten duke ndërtuar një aplikacion të ri dhe keni nevojë për të dhëna testimi që duken dhe duken më realiste ose një grup i madh të dhënash për performancën e ngarkesës...

    Si të përdorni kërkesën API në Python
    Kërkesë API në GitHub për të marrë depot e përdoruesve duke përdorur Python. Në këtë artikull, unë shpjegoj procesin hap pas hapi për të trajtuar një kërkesë API për të marrë të dhëna nga..

    Një udhëzues hap pas hapi për të zotëruar React
    Në këtë artikull, do të mësoni se si të krijoni aplikacionin React, do të mësoni se si funksionon React dhe konceptet thelbësore që duhet të dini për të ndërtuar aplikacione React. Learning..

    AI dhe Psikologjia — Pjesa 2
    Në pjesën 2 të serisë sonë të AI dhe Psikologji ne diskutojmë se si makineritë mbledhin dhe përpunojnë të dhëna për të mësuar emocione dhe ndjenja të ndryshme në mendjen e njeriut, duke ndihmuar..

    Esencialet e punës ditore të kodit tim VS
    Shtesat e mia të preferuara - Git Graph 💹 Kjo shtesë është vërtet e mahnitshme, e përdor përpara se të filloj të punoj për të kontrolluar dy herë ndryshimet dhe degët më të fundit, mund të..

    Pse Python? Zbulimi i fuqisë së gjithanshme të një gjiganti programues
    Në peizazhin gjithnjë në zhvillim të gjuhëve të programimit, Python është shfaqur si një forcë dominuese. Rritja e tij meteorike nuk është rastësi. Joshja e Python qëndron në thjeshtësinë,..