.net - 将空字符串分配给当前值为空的属性

标签 .net vb.net entity-framework-4 string

在我的 EF4 EntityModel 中,我有一个名为 USERS 的实体。 USERS 具有通用的 UserName 和 Password 字符串字段。如果我这样做:

Dim u as new USERS  
U.UserName = String.Empty

那么 U.UserName 还是什么都没有。但是如果我这样做:

Dim u as new USERS   
u.UserName = “A”   
u.UserName = String.Empty

然后 U.UserName 毫无问题地将 String.Empty 作为值。

原因是 EF4 生成 UserName 属性的方式

Public Property UserName() As Global.System.String  
    Get  
        Return _UserName  
    End Get  
    Set  
        If (_UserName <> Value) Then    ‘Here is the key  
            OnUserNameChanging(value)  
            ReportPropertyChanging("UserName")  
            _UserName = StructuralObject.SetValidValue(value, false)  
            ReportPropertyChanged("UserName")  
                OnUserNameChanged()  
            End If  
        End Set  
    End Property  

我的问题是:

我该如何处理?

我可以做些什么来避免这种行为?我不想每次想将 string.empty 设置为没有任何值的属性时都进行两次赋值,而且我不想记住我每次都必须这样做,因为我很确定我会忘记它,然后我会在代码中引入错误。我只想将 empty.string 值分配给一个属性,该属性将“”作为值。

因为我来自 C# 并且我是 vb.net 的新手,我真的希望我错过了一些东西。

最佳答案

您确定要分配空字符串而不是空值吗?如果不是,您可以将属性设置为可为空吗?

无论哪种方式,您都可以使用 T4 模板(VS 称它们为代码生成器)来操作 EF 生成的代码,因此您可以通过这样做将属性 setter 实现更改为您想要的任何内容。

编辑 - 添加更多细节

如果您使用 POCO 生成器,您将获得普通属性,即没有属性更改等

如果您使用 EntityObject 生成器,它基本上可以让您编辑当前拥有的生成。如果您使用适用于 Visual Studio 的 T4 插件,您会在 T4 上获得语法高亮显示,VS2010 插件中有一些免费的非常好。您基本上拥有可以在那里生成代码的代码,您可以对其进行调整。您标记的行在第 523 行:

If (<#=code.FieldName(primitiveProperty)#> <> Value) Then

您可以尝试根据类型做一些时髦的事情,或者您可以恢复使用 Object.Equals() 或您想要的任何其他东西,而不是这一行。或者您可以完全删除 If 部分,但这可能会产生其他后果。当您保存 T4 模板时,它会为您更新所有生成的代码。

根据您的实际操作,POCO 模板可能会解决您的问题。

顺便说一句,如果您想了解更多关于 T4 的信息,请访问 Oleg Sych 的博客,http://www.olegsych.com/tag/t4/ .

关于.net - 将空字符串分配给当前值为空的属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4605014/

相关文章:

vb.net - Oracle 日期字段 - 时间问题

c# - Entity Framework 4 与非键列/字段和不同列/字段名称的关联

c# - DataRow 和 protected 内部构造函数

c# - 使用 LINQ 时谓词的顺序重要吗?

.net - C# 通过连接字符串检索正确的 DbConnection 对象

vb.net - 如何使用 vb.net 支持编译 Mono

c# - 限制类和类属性

vb.net - T4 中的扩展方法

c# - 如何使用 Entity Framework 实现搜索功能?

c# - 使用 C# 代码运行 "Update-Database"Power Shell 命令时出现问题