6

मैं अपने Mac पर दृश्य स्टूडियो कोड से निम्नलिखित, दोनों आईडीई "डॉटनैट रन" में और क्रियान्वित करने के बाद कंसोल विंडो प्राप्त नहीं मिल सकता है नहीं मिलाAsp.net कोर इकाई की रूपरेखा IndexAttribute

मेरे पास स्टोरी नामक एक वर्ग है जिसे मैं कोड फर्स्ट के साथ डेटाबेस बनाने के लिए उपयोग करना चाहता हूं। इस वर्ग में प्राथमिक कुंजी है जो KeyAttribute और लेखक स्ट्रिंग के साथ चिह्नित है, जो MaxLengthAttribute के साथ चिह्नित है, इसलिए उन दोनों कार्य (System.ComponentModel.DataAnnotations का उपयोग करके)। दो और फ़ील्ड, डेटटाइम तिथि और बूल प्रकाशित है, इंडेक्सएट्रिब्यूट लागू है (यह दो कॉलम इंडेक्स है)। मैंने स्पष्ट रूप से इसे IX_Date प्रकाशित किया है, IsUnique = false, और IsPublished फ़ील्ड के लिए दिनांक फ़ील्ड और ऑर्डर = 2 के लिए ऑर्डर = 1 का उपयोग करें।

  • क्या मैं चलाने से पहले project.json में रखूँ "डॉटनैट बहाल" यह सही सामान में खींच IndexAttribute काम करने के लिए है करने के लिए?
  • क्या मैक/लिनक्स के लिए एएसपीकोर 1 के साथ ईएफ शामिल है, सही नामस्थान शामिल नहीं है?

धन्यवाद!

उत्तर

9

मैं अभी भी कोर टूल्स से परिचित होने की प्रक्रिया में हूं; आगे के शोध से पता चला कि यह सुविधा समर्थित नहीं है लेकिन वे एक पुल अनुरोध पर विचार करेंगे।

https://github.com/aspnet/EntityFrameworkCore/issues/4050

काम के आसपास

सिफारिश IndexAttribute के अभाव में कोड पहले मॉडल के लिए अनुक्रमित जोड़ने के लिए जिस तरह से इकाई की रूपरेखा Fluent एपीआई का उपयोग करने के लिए है। उदाहरण के लिए निम्नलिखित आपके संदर्भ (DbContext से प्राप्त) करने के लिए जोड़ा जा सकता है:

/// <summary> 
    /// Creates database structure not supported with Annotations using Fluent syntax. 
    /// </summary> 
    /// <param name="optionsBuilder">The configuration interface.</param> 
    protected override void OnModelCreating(ModelBuilder modelBuilder) 
    { 
     modelBuilder.Entity<Story>().HasIndex(
      story => new { story.Date, story.Published }).IsUnique(false); 
    } 

यह Story.Date के लिए एक दो स्तंभ अनुक्रमणिका बनाता है और Story.Published कि अद्वितीय नहीं है। इस परिवर्तन के बाद, उपयोग:

dotnet ef migrations add <name> 
dotnet ef database update 

यह नोट करना प्रवासन कोड की किस तरह यह सूचकांक बनाने के लिए उत्पन्न होता है दिलचस्प है (आप इस इस्तेमाल कर सकते हैं सीधे आपके माइग्रेशन को अनुकूलित करने के बजाय अपने संदर्भ वर्ग में कोड जोड़ने के सूचकांक बनाने के लिए) :

protected override void Up(MigrationBuilder migrationBuilder) 
{ 
    migrationBuilder.CreateTable(
     name: "Stories", 
     columns: table => new 
     { 
      Id = table.Column<int>(nullable: false) 
       .Annotation("Autoincrement", true), 
      Author = table.Column<string>(maxLength: 64, nullable: true), 
      Date = table.Column<DateTime>(nullable: false), 
      Published = table.Column<bool>(nullable: false), 
      Title = table.Column<string>(nullable: true) 
     }, 
     constraints: table => 
     { 
      table.PrimaryKey("PK_Stories", x => x.Id); 
     }); 

    migrationBuilder.CreateIndex(
     name: "IX_Stories_Date_Published", 
     table: "Stories", 
     columns: new[] { "Date", "Published" }); 
} 

ऐसे मजदूरों का फल:

SQLiteStudio showing the generated table

संबंधित मुद्दे