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

C# 实体框架-使用数据批注的属性的默认值,c#,asp.net,asp.net-mvc,entity-framework,data-annotations,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; } } 我想知道是否有一种方法,使用数据注释,将属性的值(比如Title-default)设置为其他属性值(比如Name

我有一个这样的模型

public class MyModel
{
    public int MyModelId { get; set; }
    public string Name { get; set; }
    public string Description { get; set; }
    public string Title { get; set; }
}
我想知道是否有一种方法,使用数据注释,将属性的值(比如Title-default)设置为其他属性值(比如Name)。比如:

if(MyModel.Title == "") MyModel.Title = MyModel.Name;

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

最初

我们必须把它改成

通过设置storeGeneratedPattern=“Computed”,我们可以告诉EF属性值将由DB插入

用于编辑SSDL

  • 右键单击edmx文件,使用XML(文本)编辑器打开
  • 2.按Ctrl+F组合键选择属性的名称,只需更改该属性即可


    我不知道有没有一种方法可以处理数据注释。

    如果需要默认值,请在实体默认(无参数)构造函数中设置它。对于您可以直接执行的操作,不需要进行数据注释。

    不可能将属性参数设置为函数。通常,您会得到一个错误:


    “属性参数必须是常量表达式、typeof表达式或属性参数类型的数组创建表达式”

    可能的重复:我试图通过数据注释实现这一点,但我认为这是不可能的。无论如何,我不认为这是一个骗局。这不完全一样,但如果你阅读答案和评论,你会发现他们回答了你的问题是的,但答案是2008年的。EF今年达到了4.1。某些内容可能是新的。不会出现,因此在向包含记录的现有表中添加不可为空的列时,默认值非常有用。我正在寻找一种方法来完成这项工作,遇到了一个问题-有没有一种方法可以为所有现有记录指定要填充的值?@Crake这可能是它自己单独的问题,但我可以在数据迁移中使用
    defaultValueSql
    来完成:
    AddColumn(“ExistingTable”,“NewColumn”,c=>c.Int(可空:false,defaultValueSql:“0”);
    (根据需要更改类型和默认值)