我有一个如下所示的模型类:
public class Foo
{
[Key] public int Id { get; set; }
}
我的代码中的其他地方我添加了一个私有子类:
private class Bar : Foo
{
public string Name { get; set; }
}
现在,当我进行迁移时,我得到了这个:
AddColumn("dbo.Foo", "Name", c => c.String());
AddColumn("dbo.Foo", "Discriminator", c => c.String(nullable: false, maxLength: 128));
我认为实体框架不会发现存在Bar
子类,因为它私有地嵌套在Models
命名空间之外的控制器中。我可以阻止EF修改表吗?
我尝试[NotMapped]
忽略Name
属性,但由于其使用的继承策略,EF仍会添加Discriminator
列。
答案 0 :(得分:3)
您可以在整个班级使用[NotMapped]
属性。
这是此属性的定义:
[AttributeUsage(AttributeTargets.Class | AttributeTargets.Property, AllowMultiple = false)]
public class NotMappedAttribute : Attribute
{
}
AttributeUsage
说你可以在课堂上使用它,而不仅仅是在属性上。