实体框架 - 使用数据注释的属性的默认值

noi*_*nce 10 c# asp.net asp.net-mvc entity-framework data-annotations

我有这样的模特

public class MyModel
{
    public int MyModelId { get; set; }
    public string Name { get; set; }
    public string Description { get; set; }
    public string Title { get; set; }
}
Run Code Online (Sandbox Code Playgroud)

我想知道是否有一种方法,使用数据注释,设置属性的值 - 比如标题 - 默认为其他属性值,即名称.就像是:

if(MyModel.Title == "") MyModel.Title = MyModel.Name;
Run Code Online (Sandbox Code Playgroud)

Lad*_*nka 10

如果您想要默认值,请在实体默认(无参数)构造函数中设置它.没有必要为您可以直接执行的操作提供数据注释.

  • @Crake这应该是它自己的单独问题,但我能够在我的数据迁移中使用`defaultValueSql`执行此操作:`AddColumn("ExistingTable","NewColumn",c => c.Int(nullable:false,defaultValueSql) :"0"));`(根据需要更改类型和默认值) (4认同)

Raj*_*esh 4

您可以通过在 edmx 文件的 SSDL 中编辑该属性来告诉实体框架数据库将处理该属性。

最初

<Property Name="CompanyName" Type="nvarchar" Nullable="false" MaxLength="40" />

我们已将其更改为

<Property Name="CompanyName" Type="nvarchar" Nullable="false" MaxLength="40" StoreGeneratedPattern="Computed" />

通过设置 storeGeneratePattern="Compulated"我们可以告诉 EF 该属性值将由 DB 插入。

用于编辑 SSDL

  1. 右键单击 edmx 文件,使用 XML(文本)编辑器打开。

2.Ctrl+F 属性名称并更改该属性

我不知道有没有办法处理数据注释。