0

我正在尝试在 2 个 linq to sql 实体之间创建关联,例如实体 A 和实体 B。A 使用非列属性属性(名为 BaseDocumentType )和“ThisKey”关联中的列属性和“ThisKey”的 2 列属性其他键”。以下是我的 Association 属性定义示例... [System.Data.Linq.Mapping.AssociationAttribute ( ... ThisKey = "BaseDocumentType, Column2" , OtherKey = "Column1,Column2" )]

当我运行它时,我收到以下错误...“'Library' 类型的数据成员'System.String BaseDocumentType'不是'A'类型的映射的一部分。该成员是否位于继承层次结构的根之上?”

如何使用非列属性属性定义关系或如何使其工作?

谢谢。

4

1 回答 1

0

信息很清楚。LINQ to SQL 将语句转换为 SQL,并且您尝试使用未映射到列的属性,因此无法将其转换为 SQL。

您必须从数据库中检索您想要的实体,然后尝试使用 LINQ to Objects 查询它们,即对结果列表或数组进行 LINQ 操作。更好的选择是重新考虑您的设计并找到一种仅从数据库中检索您需要的数据并避免在客户端上处理结果的方法。

在这种情况下,Linq to SQL 可以防止您做一些非常危险的事情。它本可以检索所有数据并使用您的非列属性处理它们,但这会产生巨大的性能损失。一些天真的 LINQ 提供程序实际上就是这样做的。想象一下,从数据库中检索 1000 个对象只是为了找到与此非列属性匹配的两个对象。

于 2013-07-05T14:46:37.007 回答