【发布时间】:2018-08-29 12:56:14
【问题描述】:
这里是EF初学者。
我应该如何使用实体框架对数据库模型进行更改?
我的意思是在 DB 模型中,比如更改列的数据类型、添加属性等?
例如我在用户表中有字符串密码属性,我想添加[DataType(DataType.Password)] 属性或[Required] 或任何东西。
我该怎么做呢?当然还有对我的数据库应用更改?我使用“数据库中的 EF 设计器”从 mdf 本地文件(从 mssql 工作室分离)创建了数据库模型,因此我在模型(asp.net mvc5)中有我的 emdx 模型,其中每个表的类和 App_Data 中的 DB MDF。
我想修改这些类吗?
因为我可以在那里添加属性,但图表不会改变,数据库也不会改变。我想我必须以某种方式提交更改。
我要补充一点,我无法启用迁移: 不支持从使用 Database First 或 Model First 创建的 DbContext 创建 DbModelBuilder 或编写 EDMX。
EDMX 只能从不使用现有 DbCompiledModel 创建的 Code First DbContext 中获取。
【问题讨论】:
-
您检查过docs.microsoft.com/en-us/aspnet/mvc/overview/getting-started/… 还是stackoverflow.com/questions/25737054/…?如果您希望某个字段是必需的,只需在该字段上添加一个非空约束即可。
-
这对 DataType 不起作用。我可以在 T-SQL 中进行更改,但这并不是我真正想要的。我想用EF。我看到人们只是在引用表的类中进行更改。我怎么做?如果需要先编写代码,我也愿意改变方法,但无需从头开始编写所有内容。
-
如果您首先使用数据库,则只能通过更新 EDMX 模型来更新类。但是
DataType.Password不是 C# 代码中受支持的数据类型,所以这不起作用。所有这些数据注释的问题是:它们的作用和效果是模棱两可的,因为每个框架都将自己的子集用于不同的目的。 -
@GertArnold
DataType.Password被 MVC 用来生成<input type="password" />,如果你让它从模型中删除视图。 -
DataType.Password 工作得很好,我看到前几天用过。它不是数据类型,它是一个属性,就像 [Required],你使用 [DataType(DataType.Password)]我在 mdf 文件中的表。我刚刚添加了正确的上下文,现在我得到了我需要的东西,我想......当我编译 asp.net 应用程序时,本地数据库发生了变化,但当然密码仍然是类中具有正确属性的 varchar 数据类型。我现在根本没有 EDMX 文件。
标签: sql entity-framework