1

私はこのようなものを持っています:

public class something {
   [Key]
   public int Id {get;set;}
   public string Name {get;set;}
}

public class secondsomething {
   [Key]
   public int Id {get;set;}
   [ForeignKey("Sth") {get;set;}
   public int sthId{get;set;}
   public something Sth{get;set;}
}

そして、私はこれをしたいと思います:

public class something {
   [Key]
   public int Id {get;set;} //keep this as primary key
   public string Name {get;set;} //maybe somehow mark this as a secondary key
}

public class secondsomething {
   [Key]
   public int Id {get;set;}
   [ForeignKey("Sth") {get;set;}
   public string sthName{get;set;} //don't want the id here, but it's name
   public something Sth{get;set;}
}

これを達成する方法はありますか?

4

4 に答える 4

0

Gert Arnold が言ったように、Code First でインデックスを定義するための直接的なサポートはありませんが、移行を使用している場合は、Sql() メソッドを直接呼び出してそこで定義できます。次に例を示します。

public partial class AddingUsernameIndexes : DbMigration
{
    public override void Up()
    {
        Sql("CREATE NONCLUSTERED INDEX IX_Applications_Username ON RequestApplications (Username)");
    }

    public override void Down()
    {
        Sql("DROP INDEX IX_Applications_Username");
    }
}
于 2013-02-12T05:43:10.723 に答える
0
HasRequired(x => x.sthName)
     .WithMany() //I assume
     .Map(x => x.MapKey("Sth"));
于 2013-02-11T16:20:15.900 に答える
0

コード ファーストの移行ツールが役立つのは、派手なインデックス要件を指定する場合です。http://msdn.microsoft.com/en-us/data/jj591621.aspxを参照してください

于 2013-02-11T13:51:27.993 に答える