为 linq to sql 更新 SQL Compact db 和 dbml 时出现 Method not Found 错误

Posted

技术标签:

【中文标题】为 linq to sql 更新 SQL Compact db 和 dbml 时出现 Method not Found 错误【英文标题】:Method not Found error when updating SQL Compact db and dbml for linq to sql 【发布时间】:2013-01-30 19:18:56 【问题描述】:

我有一个使用 linq to sql 和 SQL Compact 数据库的 vb.net 应用程序。我刚刚将数据库中的日期字段更新为可以为空,并使用 sqlmetal 重新生成了 dbml。现在,当我运行应用程序时,单击“搜索”按钮后出现此运行时错误:

找不到方法:'System.Nullable`1 Downtime.Students.get_DateOfBirth()'。

我注意到我对数据类型所做的最后一次更改也引起了问题。也许我没有更新 dbml 文件对吗?它在 .designer.vb 文件中为 dateOfBirth 字段提供了这个方法:

<Global.System.Data.Linq.Mapping.ColumnAttribute(Name:="dateOfBirth", Storage:="_DateOfBirth", DbType:="DateTime")>  _
Public Property DateOfBirth() As System.Nullable(Of Date)
    Get
        Return Me._DateOfBirth
    End Get
    Set
        If (Me._DateOfBirth.Equals(value) = false) Then
            Me.OnDateOfBirthChanging(value)
            Me.SendPropertyChanging
            Me._DateOfBirth = value
            Me.SendPropertyChanged("DateOfBirth")
            Me.OnDateOfBirthChanged
        End If
    End Set
End Property

【问题讨论】:

【参考方案1】:

解决方案,有点:我最终完全删除了 dbml 文件,使用 sqlmetal 重新生成 dbml,然后重新添加到项目中。

【讨论】:

以上是关于为 linq to sql 更新 SQL Compact db 和 dbml 时出现 Method not Found 错误的主要内容,如果未能解决你的问题,请参考以下文章

Linq-to-SQL 和 DateTime 的怪异

Linq to Sql:更新之属性遍历法

LINQ to SQL 关系不更新集合

如何使用 linq to sql 一次更新多行?

如何使用linq to sql一次更新多行?

Linq to SQL 通过 BLL 问题更新 - 最佳实践