【问题标题】:Subsonic 3 Foreign Key with Class relationship issue具有类关系问题的 Subsonic 3 外键
【发布时间】:2010-02-25 22:16:49
【问题描述】:

我在一个类中使用带有亚音速的 LINQ 来获取我的数据,代码如下:

public IQueryable<Veiculo> SelecionaVeiculosSite() 
        {
                   return (from v in _db.Veiculos
                            where v.Ativo == true &&
                            v.Marca.Ativo == true && 
                            v.Modelo.Ativo == true
                            select v
                           );            

        }

您会在“v.Marca.Ativo == true”处看到一个不同之处,我在 ActiveRecord 的模板中进行了一次修改以获得一个而不是一个 IQueryable。这是我创建的基于我的数据库的外键建立类关系的方式。

这是模板中修改的代码(生成):

public Marca Marca
        {
            get
            {

                  var repo=OKMMySql.Marca.GetRepo();
                  return (from items in repo.GetAll()
                       where items.ID_Marca == _ID_Marca
                       select items).SingleOrDefault();
            }
        }

在代码中没问题,但是这个选择返回这个执行时间错误:

二元运算符 Equal 不是 为类型定义 'System.Nullable`1[System.Int32]' 和 'System.Int32'。

任何人有任何想法或任何东西可以帮助我解决这个问题?

非常感谢

【问题讨论】:

    标签: c# asp.net subsonic3


    【解决方案1】:

    您的某个列似乎可以为空。去查看生成的类,看看它是哪一个,或者查看你的数据库架构。

    如果它不需要可以为空,那么只需从列中删除它并重新运行 .tt 文件。

    【讨论】:

    • 这不是解决方案。如果您需要一个可以为空的关系,那么问题仍然存在。
    • 哇,重温旧 cmets。当然,如果它需要为nullabe,这仍然是一个问题。因此,“如果它不需要是 nulalble”。如果是这样,在那个时候,我认为没有解决方案。 ,但感谢您指出显而易见的事情。
    • 回想起来的解决方案类似于where items.ID_Marca != null &amp;&amp; items.ID_Marca.Value == _ID_Marca,尽管我不知道亚音速将如何处理转换为SQL(您可能必须先将其拉入代码中使用ToList()这没什么帮助)。
    • 由于此类问题和性能问题,我停止使用亚音速。似乎我能够自己解决所有问题,而且时间不长,但现在已经有好几年了,我认为这个项目没有太大变化。有点放弃了,尽管它很有希望。
    【解决方案2】:

    安德鲁,

    这对我有用,我只是将 NotNull FLAG 放在数据库的 INT 字段中,它为我解决了这个 BUG

    非常感谢

    【讨论】:

      猜你喜欢
      • 2015-12-02
      • 2011-02-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多