SORU
24 Kasım 2011, PERŞEMBE


Varlık Çerçevesi Kod Akıcı Apı: sütunlar için Dizin Ekleme

EF 4.2 CF koşuyorum ve benim POCO nesneleri belirli sütunlar üzerinde dizin oluşturmak istiyor.

Örnek olarak sağlar bu işçi sınıfı var ki:

public class Employee
{
  public int EmployeeID { get; set; }
  public string EmployeeCode { get; set; }
  public string FirstName { get; set; }
  public string LastName { get; set; }
  public DateTime HireDate { get; set; }
}

Sık sık kendi EmployeeCode tarafından çalışanları için araştırma ve çalışanların bir sürü insan vardır çünkü bu performans nedenleriyle endeksli olması güzel olurdu.

Akıcı apı ile bunu bir şekilde yapabilir miyiz? ya da belki de veri ek açıklamalar?

Şöyle bir şey: sql komutlarını çalıştırmak için mümkün olduğunu biliyorum

context.Database.ExecuteSqlCommand("CREATE INDEX IX_NAME ON ...");

Çok fazla böyle ham SQL kaçınmak istiyorum.

bu yok biliyorum ama bu satırlar boyunca bir şey arıyor:

class EmployeeConfiguration : EntityTypeConfiguration<Employee>
    {
        internal EmployeeConfiguration()
        {
            this.HasIndex(e => e.EmployeeCode)
                .HasIndex(e => e.FirstName)
                .HasIndex(e => e.LastName);
        }
    }

ya da belki de POCO şöyle System.ComponentModel.DataAnnotations kullanarak (yine bu yok biliyorum):

public class Employee
{
  public int EmployeeID { get; set; }
  [Indexed]
  public string EmployeeCode { get; set; }
  [Indexed]
  public string FirstName { get; set; }
  [Indexed]
  public string LastName { get; set; }
  public DateTime HireDate { get; set; }
}

Eğer kod bu şekilde yapmak için bir yol uygulamak için herhangi bir planları varsa herkes bunu yapmak için nasıl herhangi bir fikir var ya?

GÜNCELLEME:Robba tarafından yanıt belirtildiği gibi, bu özellik EF sürüm 6.1 uygulanır

CEVAP
18 NİSAN 2012, ÇARŞAMBA


Göçler EF 4.3 tanıtıldı sonra şimdi ya da bir tablo değiştirme oluştururken dizinler ekleyebilirsiniz. Burada ADO.NET takım blog EF 4.3 Code-Based Migrations Walkthrough Bu bir alıntıdır

namespace MigrationsCodeDemo.Migrations
{
    using System.Data.Entity.Migrations;

    public partial class AddPostClass : DbMigration
    {
        public override void Up()
        {
            CreateTable(
                "Posts",
                c => new
                    {
                        PostId = c.Int(nullable: false, identity: true),
                        Title = c.String(maxLength: 200),
                        Content = c.String(),
                        BlogId = c.Int(nullable: false),
                    })
                .PrimaryKey(t => t.PostId)
                .ForeignKey("Blogs", t => t.BlogId, cascadeDelete: true)
                .Index(t => t.BlogId)
                .Index(p => p.Title, unique: true);

            AddColumn("Blogs", "Rating", c => c.Int(nullable: false, defaultValue: 3));
        }

        public override void Down()
        {
            DropIndex("Posts", new[] { "BlogId" });
            DropForeignKey("Posts", "BlogId", "Blogs");
            DropColumn("Blogs", "Rating");
            DropTable("Posts");
        }
    }
}

Bu benim ilk soru mutlaka aradığım şey kesinlikle yazılmış olan dizinler eklemek için güzel bir yoldur.

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • DrakeVEVO

    DrakeVEVO

    17 AĞUSTOS 2009
  • NicoleGrippo

    NicoleGrippo

    14 Kasım 2006
  • Rhapsody

    Rhapsody

    7 ŞUBAT 2008