Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/entity-framework/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Entity framework 实体框架、未映射属性和动态数据_Entity Framework_Dynamic Data - Fatal编程技术网

Entity framework 实体框架、未映射属性和动态数据

Entity framework 实体框架、未映射属性和动态数据,entity-framework,dynamic-data,Entity Framework,Dynamic Data,我使用一个实体框架数据模型来驱动一个动态数据网站,供用户更新数据 其中一个实体包含不可为空的字符串属性(说明)。在数据库中,其中一行的描述为空(不是null,而是空字符串)。当我尝试更新描述时,我得到以下验证错误:“此属性不能设置为空值”。 如果我手动更新数据库中的描述,然后编辑属性,它将按预期工作。但是,只要我将数据库中的描述更改回空字符串,就会发生验证错误。错误发生在描述的setter上 因此,我尝试添加一个名为CustomDescription的附加字符串属性,该属性基本上包装了描述,在实

我使用一个实体框架数据模型来驱动一个动态数据网站,供用户更新数据

其中一个实体包含不可为空的字符串属性(说明)。在数据库中,其中一行的描述为空(不是null,而是空字符串)。当我尝试更新描述时,我得到以下验证错误:“此属性不能设置为空值”。 如果我手动更新数据库中的描述,然后编辑属性,它将按预期工作。但是,只要我将数据库中的描述更改回空字符串,就会发生验证错误。错误发生在描述的setter上

因此,我尝试添加一个名为CustomDescription的附加字符串属性,该属性基本上包装了描述,在实体的元数据中使描述成为ScaffoldColumn(false),并将新属性添加到实体的元数据中

    [ScaffoldColumn(true)]
    public string CustomDescription
    {
        get { return this.Description; }
        set {
            if (value == null)
            {
                value = string.Empty;
            }
            this.Description = value;
        }
    }

但是,为了使该属性显示在动态数据站点上,我需要向该属性添加什么内容?

在相应的元数据类中,只需将其作为实际字段引用即可:

    [MetadataType(typeof(MyClassMetadata))]
    public partial class MyClass
    {
        [ScaffoldColumn(true)]
        public string CustomString
        {
        return "foo";
        }
    }

public class MyClassMetadata
{

    [Display(Name = "Custom")]
    public object CustomString { get; set; }        
}

在相应的元数据类中,只需像引用实际字段一样引用它:

    [MetadataType(typeof(MyClassMetadata))]
    public partial class MyClass
    {
        [ScaffoldColumn(true)]
        public string CustomString
        {
        return "foo";
        }
    }

public class MyClassMetadata
{

    [Display(Name = "Custom")]
    public object CustomString { get; set; }        
}

问题是旧值在不可为空的字段中是空字符串。 默认情况下,框架将其转换为null。 要修复此错误,只需将以下属性添加到字段:

[DisplayFormat(ConvertEmptyStringToNull = false)]
public object Description { get; set; } 

问题是旧值在不可为空的字段中是空字符串。 默认情况下,框架将其转换为null。 要修复此错误,只需将以下属性添加到字段:

[DisplayFormat(ConvertEmptyStringToNull = false)]
public object Description { get; set; }