使用Telerik OpenAccess ORM,我有两个对象User和Investment。更具体地说,Investments包含了对User的外键,就像任何典型的一对多关系一样。换句话说,每个用户可以拥有多个投资,但每个投资只能属于一个用户。
然后,我尝试利用开放式访问功能"Is Managed"。这意味着我可以做类似于User.Investments.Clear();的事情,并删除所有相关的投资(或者至少在多对多关系中有效),但不幸的是,当我尝试这样做时,会收到以下错误提示:
"Update failed: Telerik.OpenAccess.RT.sql.SQLException: Cannot insert the value NULL into column 'UserID', table 'CODECorp.dbo.Investment'; column does not allow nulls. UPDATE fails."
显然,ORM试图做的是从投资对象中删除关联(即外键),而不是删除它。我通过运行SQL分析器进行确认,并可以看到它正在运行Update而不是Delete。
那么,我在这里缺失了什么?为什么ORM尝试错误地删除关联而不是简单地删除行,正如您所期望的那样?
然后,我尝试利用开放式访问功能"Is Managed"。这意味着我可以做类似于User.Investments.Clear();的事情,并删除所有相关的投资(或者至少在多对多关系中有效),但不幸的是,当我尝试这样做时,会收到以下错误提示:
"Update failed: Telerik.OpenAccess.RT.sql.SQLException: Cannot insert the value NULL into column 'UserID', table 'CODECorp.dbo.Investment'; column does not allow nulls. UPDATE fails."
显然,ORM试图做的是从投资对象中删除关联(即外键),而不是删除它。我通过运行SQL分析器进行确认,并可以看到它正在运行Update而不是Delete。
那么,我在这里缺失了什么?为什么ORM尝试错误地删除关联而不是简单地删除行,正如您所期望的那样?