Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/loops/2.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
C# 如何检查实体框架类型的属性是否可为null_C#_Entity Framework_Nullable - Fatal编程技术网

C# 如何检查实体框架类型的属性是否可为null

C# 如何检查实体框架类型的属性是否可为null,c#,entity-framework,nullable,C#,Entity Framework,Nullable,我有一个从数据库生成的EntityDataModel。 其中一个实体模型有两个属性,它们都是字符串类型。 一个为Nullable=True,另一个为Nullable=False 如何在运行时检查Nullable属性的值?如果属性使用[Required]或[StringLength]等属性修饰,并且属性MinimumLength设置为大于0的值,则可以使用该属性的GetType方法。此方法将返回一个类型为的对象,它还有许多其他方法,如GetCustomAttributes。此方法将返回应用于属性的

我有一个从数据库生成的EntityDataModel。 其中一个实体模型有两个属性,它们都是字符串类型。 一个为Nullable=True,另一个为Nullable=False


如何在运行时检查Nullable属性的值?

如果属性使用[Required]或[StringLength]等属性修饰,并且属性MinimumLength设置为大于0的值,则可以使用该属性的GetType方法。此方法将返回一个类型为的对象,它还有许多其他方法,如GetCustomAttributes。此方法将返回应用于属性的所有自定义属性


如前所述,如果您知道应用了哪些属性,如前面提到的属性,那么使用YourObject.YourProperty.GetType.GetCustomAttributesRue就可以做到这一点。您需要遍历数组并将结果强制转换为适当的属性。

也许没有那么优雅,但是您不能在EntityDataModel中为buth实体简单地将nullable设置为true吗?您总是可以使用HasValue属性检查Nullable是否包含值。问题是什么?您可以像myEntity一样进行比较,其中e=>e.NullableStringProperty==ValueToCompare@CommuSoft不能在字符串上使用HasValue。这仅适用于值类型。String是引用类型,它没有此属性。我正在检查模型类型是否存在可为空的条件而不是实例。我没有模型的实例,只是它的类型。因此,我尝试了ModelType.getPropertyNameOfProperty.PropertyType.getCustomAttributesRue,但列出的属性中没有一个是System.ComponentModel.DataAnnotations.RequiredAttribute类型。我给了您一个示例。您是使用代码优先、模型优先还是数据库优先的方法?如果您有一个.edmx文件,请查看生成的代码,看看是否应用了任何属性。我感谢您的帮助。我从数据库中得到了一个edmx文件。如果我查看建模对象的分部类,我在属性上看不到任何属性。对于值类型属性,设计器已将类型设置为Nullable,其中在edmx中为Nullable=True,但对于字符串属性,则不设置为Nullable。这两个属性都是公共字符串Property1{get;set;}。我假设[Required]注释可能是在编译时添加的?edmx设计器中的可空属性是否只是设计时属性?