与我的问题相关的 stackoverflow 上有大量问答,但我无法推断出问题的原因以及在这种情况下最有效的解决方案;
因此,我有一个方法允许您传递 parentID,并根据值使用 LINQ 查询过滤记录。数据库中的字段允许 NULL 值。现在,如果我在 where 子句中使用运算符比较字段==
,则发出的 sql 是错误的(它不IS NULL
用于比较),因此查询产生 0 个结果。我使用Object.Equals()
方法解决了这个问题。那行得通,但是现在我在传递 NON NULL 值时遇到异常,一个整数
无法创建“System.Object”类型的常量值。此上下文仅支持原始类型或枚举类型。
所以我写了一个简单的方法
using (TestEntities context = new Entities())
{
return from c in context.ItemMappings
where c.ParentID.Equals(parentID)
select new ItemDTO
{
ItemID = c.Item.ItemID,
ItemName = c.Item.ItemName,
ItemType = new ItemTypeDTO
{
TypeID = c.Item.Type.TypeID,
TypeName =c.Item.Type.TypeName
};
}