在遵循数据库优先方法时,使用 [NotMapped] 将附加信息传递给视图
Using [NotMapped] to pass additional info to the view, when following Database first approach
我正在开发 asp.net mvc-5 网络应用程序,我使用的是 entity framework 5.0。我映射了我的 SQL 服务器数据库表,它创建了一个 .edmx
文件。现在我想扩展模型 classes 以具有额外的非数据库属性,所以我为我的模型 class 创建了一个部分 class 并且我提供了一个额外的属性如下:-
using System;
using System.Collections.Generic;
using System.ComponentModel.DataAnnotations;
using System.ComponentModel.DataAnnotations.Schema;
using System.Linq;
using System.Web;
namespace Test.Models
{
public partial class User
{
[NotMapped]
public string NonDataBaseColumn { set; get; }
}
}
所以我有这些问题:
- 这是通过在部分 classes 中定义附加列来传递附加属性的有效方法吗?
- 由于我使用的是数据库优先方法,所以我是否需要添加
[NotMapped]
数据注释,或者 [NotMapped]
仅在遵循代码优先方法时才有效?
- 在任何情况下都可以在数据库中自动创建 NotMapped 列(在我的例子中是 NonDataBaseColumn)吗?
is this a valid approach to pass additional attributes, by defining additional columns inside the partial classes?
从技术上讲是这样,但请跟我重复:不要将 Entity Framework 模型用作 MVC 视图模型,并广为宣传。
我仍然不明白为什么几乎每个教程都展示了这种每天都会产生 twenty-odd 此类问题的可怕做法,但这不是应该做的方式。 域模型不是视图模型。
这些教程可能会这样做,因为它在 "My first TODO WebApp" 上工作得非常好,所以他们要展示的代码更少,要解释的良好开发实践也更少,让你当它因为任何比这更复杂的东西而可怕地崩溃时,就会变得一团糟。
例如,尝试向实体添加 SelectList
属性 以提供包含数据的下拉列表,然后将数据层提取到 DAL 库中,然后挠头想知道为什么你必须从你的 DAL 中引用 MVC。
另请参阅:ASP.NET MVC: using EF entities as viewmodels?
至于您关于 [NotMapped]
属性的问题:它的作用与它的名称和文档状态完全相同,它导致 属性 它所应用的不映射到数据库列。
我正在开发 asp.net mvc-5 网络应用程序,我使用的是 entity framework 5.0。我映射了我的 SQL 服务器数据库表,它创建了一个 .edmx
文件。现在我想扩展模型 classes 以具有额外的非数据库属性,所以我为我的模型 class 创建了一个部分 class 并且我提供了一个额外的属性如下:-
using System;
using System.Collections.Generic;
using System.ComponentModel.DataAnnotations;
using System.ComponentModel.DataAnnotations.Schema;
using System.Linq;
using System.Web;
namespace Test.Models
{
public partial class User
{
[NotMapped]
public string NonDataBaseColumn { set; get; }
}
}
所以我有这些问题:
- 这是通过在部分 classes 中定义附加列来传递附加属性的有效方法吗?
- 由于我使用的是数据库优先方法,所以我是否需要添加
[NotMapped]
数据注释,或者[NotMapped]
仅在遵循代码优先方法时才有效? - 在任何情况下都可以在数据库中自动创建 NotMapped 列(在我的例子中是 NonDataBaseColumn)吗?
is this a valid approach to pass additional attributes, by defining additional columns inside the partial classes?
从技术上讲是这样,但请跟我重复:不要将 Entity Framework 模型用作 MVC 视图模型,并广为宣传。
我仍然不明白为什么几乎每个教程都展示了这种每天都会产生 twenty-odd 此类问题的可怕做法,但这不是应该做的方式。 域模型不是视图模型。
这些教程可能会这样做,因为它在 "My first TODO WebApp" 上工作得非常好,所以他们要展示的代码更少,要解释的良好开发实践也更少,让你当它因为任何比这更复杂的东西而可怕地崩溃时,就会变得一团糟。
例如,尝试向实体添加 SelectList
属性 以提供包含数据的下拉列表,然后将数据层提取到 DAL 库中,然后挠头想知道为什么你必须从你的 DAL 中引用 MVC。
另请参阅:ASP.NET MVC: using EF entities as viewmodels?
至于您关于 [NotMapped]
属性的问题:它的作用与它的名称和文档状态完全相同,它导致 属性 它所应用的不映射到数据库列。