C# 是否从添加迁移中排除仅setter属性?
我有一个模型,该模型包含一个专用setter-only属性,我想告诉EF Core(2.1.0-preview2-final)在执行C# 是否从添加迁移中排除仅setter属性?,c#,entity-framework-core,entity-framework-migrations,C#,Entity Framework Core,Entity Framework Migrations,我有一个模型,该模型包含一个专用setter-only属性,我想告诉EF Core(2.1.0-preview2-final)在执行添加迁移时忽略该属性,例如: using System.ComponentModel.DataAnnotations.Schema; public class Model { public int Id { get; set; } public string Prop { get; set; } [NotMapped] privat
添加迁移时忽略该属性,例如:
using System.ComponentModel.DataAnnotations.Schema;
public class Model
{
public int Id { get; set; }
public string Prop { get; set; }
[NotMapped]
private string PropPrivateSetter
{
set { Prop = value; }
}
}
我的上下文使用新的EntityTypeBuilder.HasData()
方法,如下所示:
protected override void OnModelCreating(ModelBuilder modelBuilder)
{
modelBuilder.Entity<Model>(entity => entity.HasKey(e => new { e.Id }));
// This line causes Add-Migration to fail.
modelBuilder.Entity<Model>().HasData(new Model { Id = 1 });
}
在HasData
调用之前,我尝试调用Ignore
,但没有成功:
protected override void OnModelCreating(ModelBuilder modelBuilder)
{
modelBuilder.Entity<Model>(entity => entity.HasKey(e => new { e.Id }));
modelBuilder.Entity<Model>(entity => entity.Ignore("PropPrivateSetter"));
// This line causes Add-Migration to fail.
modelBuilder.Entity<Model>().HasData(new Model { Id = 1 });
}
模型创建时受保护的覆盖无效(ModelBuilder ModelBuilder)
{
Entity(Entity=>Entity.HasKey(e=>new{e.Id}));
modelBuilder.Entity(Entity=>Entity.Ignore(“PropPrivateSetter”);
//此行导致添加迁移失败。
modelBuilder.Entity().HasData(新模型{Id=1});
}
有没有一种方法可以做到这一点,而不必向我的属性添加get{return null;}
?用于什么目的?它在2.1.0-preview2中正常工作(在将Id属性添加到模型类之后)。您是否明确地在模型中的某个地方添加了该属性?@Smit我已经根据您的评论增强了我的问题,我发现调用HasData
会重现该问题。@viveknuna这与UI问题有关。@WhitneyKew-您在EF Core中遇到了一个错误。我已提交
protected override void OnModelCreating(ModelBuilder modelBuilder)
{
modelBuilder.Entity<Model>(entity => entity.HasKey(e => new { e.Id }));
modelBuilder.Entity<Model>(entity => entity.Ignore("PropPrivateSetter"));
// This line causes Add-Migration to fail.
modelBuilder.Entity<Model>().HasData(new Model { Id = 1 });
}