我有一张包含以下内容的表格:
CREATE TABLE [Location]([ADDRESS1] [nvarchar](50) NOT NULL DEFAULT (' '));
我将其导入Entity Framework 4.1。
Entity Framework的设计师展示了这一点:
[EdmScalarPropertyAttribute(EntityKeyProperty=false, IsNullable=false)]
[DataMemberAttribute()]
public global::System.String ADDRESS1
{
get
{
return _ADDRESS1;
}
set
{
OnADDRESS1Changing(value);
ReportPropertyChanging("ADDRESS1");
_ADDRESS1 = StructuralObject.SetValidValue(value, false);
ReportPropertyChanged("ADDRESS1");
OnADDRESS1Changed();
}
}
private global::System.String _ADDRESS1 = " ";
partial void OnADDRESS1Changing(global::System.String value);
partial void OnADDRESS1Changed();
当我构建它时,我在Silverlight应用程序中获得了一个* .web.g.cs文件,该字段如下所示:
[DataMember()]
[Required()]
[StringLength(50)]
public string ADDRESS1
{
get
{
return this._address1;
}
set
{
if ((this._address1 != value))
{
this.OnADDRESS1Changing(value);
this.RaiseDataMemberChanging("ADDRESS1");
this.ValidateProperty("ADDRESS1", value);
this._address1 = value;
this.RaiseDataMemberChanged("ADDRESS1");
this.OnADDRESS1Changed();
}
}
}
我是否错过了实体框架中的设置?在我看来,如果该字段是非NULL代码生成正在根据需要标记该字段,即使我告诉它默认是string.empty(或空白)。
答案 0 :(得分:1)
NOT NULL表示必需。这是控制必须提供值的唯一方法。
新记录的空字符串并不意味着您无法显式插入NULL值,但NOT NULL将阻止您这样做。