c# - 我可以在不扩展表格的情况下扩展模型吗?

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

我有一个看起来像这样的模型类:

public class Foo
{
    [Key] public int Id { get; set; }
}

我在代码的其他地方添加了一个private 子类:

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));

我不认为 Entity Framework 会发现 Bar 子类,因为它私密地嵌套在 Models 命名空间之外的 Controller 中。我可以阻止 EF 修改表吗?

我试过 [NotMapped] 忽略 Name 属性,但 EF 仍然添加了一个 Discriminator 列,因为它使用了继承策略。

最佳答案

您可以只对整个类使用 [NotMapped] 属性。

这是这个属性的定义:

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

AttributeUsage 表示您可以在类上使用它,而不仅仅是在属性上。

关于c# - 我可以在不扩展表格的情况下扩展模型吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35659933/

相关文章:

c# - 使用 AutoMapper 时,此平台不支持 IDictionaryFactory

c# - 从不包含在模型 View 中的 Dropdownlist 模型获取发布的 ID

c# - 如何编写实体实例方法以在 Entity Framework 4.0 中持久化自身?

c# - System.Data.Spatial 或 System.Data.Entity.Spatial

c# - ExpandoObject 的简单测试失败。谁能解释为什么?

c# - 当给定的区域性不知道格式时,Convert.ToDateTime() 如何解析给定的字符串

c# - 从 MVC 应用程序发送文件到 Web API 性能

asp.net-mvc - 不同项目中的 ASP.NET MVC 3 ViewModels?

asp.net - 为什么即使我将 EnableViewState 设置为 false 也会呈现 __VIEWSTATE 隐藏字段

c# - 在 C# 中使用第三方代码