2012-10-02 55 views
3

我正在使用实体框架4.3.1,自动生成实体从数据库中。在实体框架中设置默认值 - Database First

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

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

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

也许如果有人能给我一个很好的例子!

+1

您应该将默认值放在数据库定义中。 – MrFox

+0

由于这不是第一个代码,因此MrFox有正确的想法。 –

+0

我可以这样做,但我想尽可能避免它。 – deep

回答

2

你给的例子意味着描述永远只能是“默认字符串”

您可以设置它在构造函数中

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;} } 
    } 
} 
+0

嘿谢谢!我尝试了两种方式,但似乎并不奏效。第二个告诉我,由于定义了两次(因为它已经在ADO.net实体代码中定义),所以存在歧义。基本上我使用asp.net MVC来检查用户是否将文本添加到特定字段,如果不是该模型应添加默认值。 – deep

+0

啊,是的......没有IDE编写代码的危险:-)你可能只需要声明属性为虚拟..? –

+0

尝试第一个,它的工作!谢谢! – deep

2

您在局部使用类OnCreated

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

嘿,感谢您的快速回复!我试过,但我得到错误没有定义声明发现实施部分方法的声明。忘了提及我正在使用asp.net MVC。 – deep