我收到此错误消息:
“无法决定考虑哪个属性的密钥 - 您可以创建一个名为'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
{...
我该如何解决这个问题?
答案 0 :(得分:1)
您应该发布异常的堆栈跟踪。
这只是一个疯狂的猜测,但我认为亚音速会找到两个可能的主键,一个叫做ID,另一个带有SubSonicPrimaryKey
属性,并且不检查它们是否相等,因为可能键的数量是不等于1抛出异常。
您应该尝试删除类的SubSonicPrimaryKey
属性,因为该属性已被称为ID
。
答案 1 :(得分:0)
我的猜测是你的问题与uint值类型有关。 SubSonic在处理无符号值类型时遇到问题。 尝试使用int属性代替主键!