Entity framework core EF核心多对零关系配置

Entity framework core EF核心多对零关系配置,entity-framework-core,Entity Framework Core,如何防止EF Core迁移向时区添加阴影属性: public partial class InitialCreate : Migration { protected override void Up(MigrationBuilder migrationBuilder) { migrationBuilder.CreateTable( name: "Core_TimeZone", schema: "dbo",

如何防止EF Core迁移向时区添加阴影属性:

public partial class InitialCreate : Migration
{
    protected override void Up(MigrationBuilder migrationBuilder)
    {
        migrationBuilder.CreateTable(
            name: "Core_TimeZone",
            schema: "dbo",
            columns: table => new
            {
                StateOrProvinceId = table.Column<int>(nullable: true),
                ...
            },
            constraints: table =>
            {
                table.PrimaryKey("PK_Core_TimeZone", x => x.Id);
                table.ForeignKey(
                    name: "FK_Core_TimeZone_Core_StateOrProvince_StateOrProvinceId",
                    column: x => x.StateOrProvinceId,
                    principalSchema: "dbo",
                    principalTable: "Core_StateOrProvince",
                    principalColumn: "Id",
                    onDelete: ReferentialAction.Restrict);
            });
    }
}
public分部类InitialCreate:迁移
{
受保护的覆盖作废(MigrationBuilder MigrationBuilder)
{
migrationBuilder.CreateTable(
名称:“核心时区”,
模式:“dbo”,
列:表=>new
{
StateOrProvinceId=table.Column(可空:true),
...
},
约束:表=>
{
表.PrimaryKey(“PK\u Core\u时区”,x=>x.Id);
表1.外键(
名称:“FK\U核心\时区\核心\州或省\州或省ID”,
列:x=>x.StateOrProvinceId,
原则模式:“dbo”,
原则性:“核心州或省”,
主栏:“Id”,
onDelete:referentialiction.Restrict);
});
}
}
以下是POCO类:

public partial class TimeZone : BaseEntity
{
    …
   // no StateOrProvince related properties
}


public partial class StateOrProvince : BaseEntity
{
    …
    private ICollection<Dna.NetCore.Core.BLL.Entities.Common.TimeZone> _timeZones;
    public virtual ICollection<Dna.NetCore.Core.BLL.Entities.Common.TimeZone> TimeZones
    {
        get { return _timeZones ?? (_timeZones = new List<Dna.NetCore.Core.BLL.Entities.Common.TimeZone>()); }
        set { _timeZones = value; }
    }
}
公共部分类时区:BaseEntity
{
…
//无州或省相关属性
}
公共部分类状态或提供:BaseEntity
{
…
私人ICollection\u时区;
公共虚拟ICollection时区
{
获取{return\u timeZones??(\u timeZones=new List());}
设置{u时区=值;}
}
}
和配置类:

public class StateOrProvinceConfiguration : IEntityTypeConfiguration<StateOrProvince>
{
    public void Map(EntityTypeBuilder<StateOrProvince> builder)
    {
        …
        builder.HasMany(d => d.TimeZones)
               .WithOne()
               .OnDelete(DeleteBehavior.Restrict);
    }
}
public class StateOrProvinceConfiguration:IEntityTypeConfiguration
{
公共空白地图(EntityTypeBuilder)
{
…
builder.HasMany(d=>d.TimeZones)
.WithOne()
.OnDelete(DeleteBehavior.Restrict);
}
}
无论是否包含HasMany().WithOne()配置,我都将获得shadow属性

全部