を定義しているにもかかわらず、Id列を作成します。Entity Frameworkの6他のプライマリキーは、私はとのDataObjectを定義し
public class SensorType : EntityData
{
//PKs
public string CompanyId { get; set; }
public string ServiceId { get; set; }
public string Type { get; set; }
}
そしてたCompanyIdを作るために流暢なAPIを使用して複合キーをServiceID:でも
modelBuilder.Entity<SensorType>()
.HasKey(t => new { t.CompanyId, t.ServiceId });
//No autogeneration of PKs
modelBuilder.Entity<SensorType>().Property(t => t.ServiceId)
.HasDatabaseGeneratedOption(System.ComponentModel.DataAnnotations.Schema.DatabaseGeneratedOption.None);
modelBuilder.Entity<SensorType>().Property(t => t.CompanyId)
.HasDatabaseGeneratedOption(System.ComponentModel.DataAnnotations.Schema.DatabaseGeneratedOption.None);
を主キーが設定されているにもかかわらず、Entity FrameworkはAdd-Migrationを実行するとIDという列を作成します。
CreateTable(
"dbo.SensorTypes",
c => new
{
CompanyId = c.String(nullable: false, maxLength: 128),
ServiceId = c.String(nullable: false, maxLength: 128),
Type = c.String(),
Id = c.String(
annotations: new Dictionary<string, AnnotationValues>
{
{
"ServiceTableColumn",
new AnnotationValues(oldValue: null, newValue: "Id")
...
})
.PrimaryKey(t => new { t.CompanyId, t.ServiceId })
.Index(t => t.CreatedAt, clustered: true);
}
EFがこの列を追加しないようにするにはどうすればよいですか?ドキュメントの
意図的に両方のフィールドの組み合わせを複合キーとして使用しようとしていますか?もしそうなら、本当に良い理由はありますか? – Basic
エンティティフレームワークにDatabaseGeneratedOptionについて通知する必要はありません。なし、ちょうど会社とサービステーブルとの関係を設定します – Monah
EntityDataのコードを入れて、EntityデータにIdが含まれていると思われます。これがプライマリキーとなる理由です。 – Monah