如何解决“无法决定考虑哪个属性的密钥”错误

时间:2010-10-10 00:11:32

标签: c# subsonic subsonic3

我收到此错误消息:

  

“无法决定考虑哪个属性的密钥 - 您可以创建一个名为'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
        {...

我该如何解决这个问题?

2 个答案:

答案 0 :(得分:1)

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

这只是一个疯狂的猜测,但我认为亚音速会找到两个可能的主键,一个叫做ID,另一个带有SubSonicPrimaryKey属性,并且不检查它们是否相等,因为可能键的数量是不等于1抛出异常。

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

答案 1 :(得分:0)

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