【问题标题】:Setting default value in entity framework - Database First在实体框架中设置默认值 - 数据库优先
【发布时间】:2012-10-02 14:06:19
【问题描述】:

我正在使用 Entity Framework 4.3.1,从数据库中自动生成实体。

从这里,有没有办法将默认值设置为?我不想把它放在自动生成的代码中,因为它会被覆盖。

我知道可以使用部分类,所以我尝试了类似的方法,其中生成实体,DESCRIPTION_ 是我要设置为默认值的属性。

namespace name.Models
{
    public partial class ENTITY
    {
        public string DESCRIPTION_
        {
            set { _DESCRIPTION_ = "default string"; }
        }
    }
}

如果有人能给我举个例子,那就太好了!

【问题讨论】:

  • 你应该在你的数据库定义中加入默认值。
  • 既然这不是代码优先,那么 MrFox 的想法是正确的。
  • 我可以这样做,但我想尽可能避免这样做。

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


【解决方案1】:

您给出的示例意味着DESCRIPTION只能是“默认字符串”

可以在构造函数中设置

namespace name.Models 
{
  public partial class ENTITY
  {
    private string defaultDescription = "some text";
    public ENTITY() {
      DESCRIPTION_ = defaultDescription;
    } 
  }
}

或通过将您的属性切换为具有支持字段的属性

namespace name.Models
{
    public partial class ENTITY
    {
        private string _desc = "some default value"; 
        public virtual string DESCRIPTION_ {get {return _desc} set {_desc = value;} }
    }
}

【讨论】:

  • 嘿,谢谢!我都试过了,但似乎没有用。第二个告诉我有歧义,因为它被定义了两次(因为它已经在 ADO.net 实体代码中定义了)。基本上我使用 asp.net MVC,检查用户是否将文本添加到某个字段,如果没有,模型应该添加默认值。
  • 啊,是的...在没有 IDE 的情况下编写代码的危险 :-) 您可能只需要将该属性声明为虚拟...?
  • 我不明白你是如何做到这一点的。在第一种情况下,我得到同样的错误“类型'OTIS.Models.Admin.Company'已经定义了一个名为'Company'的成员具有相同的参数类型”。 ???
  • 您可能需要将该成员声明为虚拟成员?
【解决方案2】:

你在部分类上使用OnCreated

public partial class ENTITY
{    
  partial void OnCreated()
  {
    DESCRIPTION_ = "default string";
  } 
}

【讨论】:

  • 您好,感谢您的快速回复!我试过了,但我得到错误没有找到实现部分方法声明的定义声明。忘了说我使用的是 asp.net MVC。
猜你喜欢
  • 1970-01-01
  • 2016-06-09
  • 2011-08-05
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-02-22
相关资源
最近更新 更多