Entity framework core EF核心多对零关系配置
如何防止EF Core迁移向时区添加阴影属性: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",
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属性
全部