【问题标题】:Have model contain field without adding it to the database? [closed]模型是否包含字段而不将其添加到数据库中? [关闭]
【发布时间】:2013-08-15 10:33:45
【问题描述】:

在我的 Asp.NET MVC4 应用程序中,我想在我的模型中添加一个字段而不将其添加到数据库中。

一种只存在于模型的 c# 实例中而不存在于数据库本身中的字段。

是否有任何注释或其他方式从数据库本身中排除该字段?

我的意思是我可以在运行时读取和写入数据库不知道的对象。

【问题讨论】:

  • 这就是我们有 models 和 viewmodels 的原因。第一个代表您的业务对象,它们必须(大部分时间)映射到数据库。后者将简单地保存您的视图正常工作所需的任何数据。
  • 你在使用 EntityFramework 'Code First'吗?
  • @AndreCalil 我明白了,但我宁愿避免创建整个视图模型,因为我只有一个需要 setter 和 getter 的字段值。
  • @Zebedee 好的,请查看这个问题:stackoverflow.com/questions/10385248/…
  • @AndreCalil 模型必须映射到数据库是不正确的。没有数据库驱动的模型是很常见的。

标签: c# asp.net asp.net-mvc database entity-framework


【解决方案1】:

只需使用[NotMapped] 装饰您的领域/财产。

例如:

public class MyModel
{
    public int Id { get; set; }
    public string Name { get; set; }

    [NotMapped]
    public string Type { get; set; }
}

见http://msdn.microsoft.com/en-us/library/system.componentmodel.dataannotations.schema.notmappedattribute.aspx

【讨论】:

    【解决方案2】:

    这取决于您使用什么框架来访问您的数据。我假设它是实体框架。好吧,您可以使用您希望不映射到数据库的属性创建部分类。

    类似

    public class Class1
    {
        string Text { get; set; }
    
        int Number { get; set; }
    }
    
    public partial class Class1
    {
        bool IsSomething { get; set; }
    }
    

    但不建议这样做。 更多的: Entity Framework: add property that don't map to database

    或者,如果您使用的是 Code First: Ignoring a class property in Entity Framework 4.1 Code First

    【讨论】:

      猜你喜欢
      • 2021-07-24
      • 2011-12-14
      • 2020-01-23
      • 2020-11-19
      • 1970-01-01
      • 2014-01-01
      • 2020-02-19
      • 2014-08-21
      • 1970-01-01
      相关资源
      最近更新 更多