[asp.net-mvc]我可以没有延长它的表扩展模型吗?

发布时间: 2016/10/4 17:36:09
注意事项: 本文中文内容可能为机器翻译,如要查看英文原文请点击上面连接.

我有一个模型类,看起来像这样︰

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:

您可以只使用 [NotMapped] 你整个的类上的属性。

这是此属性的定义︰

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

AttributeUsage说关于阶级和不只是属性,您可以使用它。

赞助商