【问题标题】:How to address "Can't decide which property to consider the Key" error如何解决“无法决定要考虑哪个属性”错误
【发布时间】:2010-10-10 00:11:32
【问题描述】:

我收到此错误消息:

“无法决定要考虑哪个属性 - 您可以创建一个名为 'ID' 的属性或使用 SubSonicPrimaryKey 属性标记一个”

有问题的代码由context.tt生成:

    public SqlQuery Delete<T>(Expression<Func<T,bool>> column) where T:new()
    {
        LambdaExpression lamda = column;
        SqlQuery result = new Delete<T>(this.Provider);
        result = result.From<T>();
        result.Constraints=lamda.ParseConstraints().ToList();
        return result;
    }

在我的数据库中,相应的表实际上有一个名为ID 的主键。我尝试插入SubSonicPrimaryKey 属性:

    uint _ID;
    [SubSonicPrimaryKey]
    public uint ID
    {
        get { return _ID; }
        set
        {...

我该如何解决这个问题?

【问题讨论】:

    标签: c# subsonic subsonic3


    【解决方案1】:

    您应该发布异常的堆栈跟踪。

    这只是一个疯狂的猜测,但我认为 subsonic 找到了两个可能的主键,一个称为 ID 和一个具有 SubSonicPrimaryKey 属性的主键,并且不检查它们是否相等,因为可能键的计数不相等为 1 抛出异常。

    您应该尝试删除您的类的SubSonicPrimaryKey 属性,因为该属性已被称为ID

    【讨论】:

      【解决方案2】:

      我的猜测是您的问题与 uint 值类型有关。 SubSonic 存在处理无符号值类型的问题。 尝试使用 int 属性代替您的主键!

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2018-08-03
        • 1970-01-01
        • 2013-11-18
        • 1970-01-01
        • 2020-07-02
        • 2015-01-15
        相关资源
        最近更新 更多