我可以扩展模型而不扩展其表吗?

时间:2016-02-26 19:17:41

标签: c# asp.net-mvc entity-framework ef-code-first entity-framework-6

我有一个如下所示的模型类:

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列。

1 个答案:

答案 0 :(得分:3)

您可以在整个班级使用[NotMapped]属性。

这是此属性的定义:

[AttributeUsage(AttributeTargets.Class | AttributeTargets.Property, AllowMultiple = false)]
public class NotMappedAttribute : Attribute
{
}

AttributeUsage说你可以在课堂上使用它,而不仅仅是在属性上。