您的位置:首页 > 其它

关于Grove的主键设置问题

2007-03-04 09:45 302 查看
我以前是JAVA程序员,现因公司的需国转向.net,但对以前JAVA的开发思想和方法非常怀念特别是Hibernate,我想C#和java是那么的相象,也应该有ORM框架的吧.Google一下就发现了Grove这个很好的工具.这个工具小七而实用.不过就那个短短的几句帮助文件,在使用过程中还是碰到很多问题的.

在以前的使用中,因为数据库的主键都是自增长的,一直没有发现问题,不过有一次应用时主键不是自增长的,就出现问题了,生的的一个Users表的类如下:


namespace f2f




...{


using System;


using Grove.ORM;


[DataTable("f2f_users")]


public class f2f_users




...{


String _userID;


String _username;


DateTime _lastVisist;


String _lastIP;


String _userType;




[KeyField("userID")]


public String userID




...{




get...{return this._userID;}




set...{this._userID=value;}


}


[DataField("username")]


public String username




...{




get...{return this._username;}




set...{this._username=value;}


}


[DataField("lastVisist")]


public DateTime lastVisist




...{




get...{return this._lastVisist;}




set...{this._lastVisist=value;}


}


[DataField("lastIP")]


public String lastIP




...{




get...{return this._lastIP;}




set...{this._lastIP=value;}


}


[DataField("userType")]


public String userType




...{




get...{return this._userType;}




set...{this._userType=value;}


}




public bool save()




...{


try




...{


ObjectOperator oo = getObjectOperator.getOperator();


oo.Insert(this);


return true;


}


catch(Exception e)




...{


log.write("保存用户信息失败"+e.ToString());


return false;


}


}




public bool update()




...{


try




...{


ObjectOperator oo = getObjectOperator.getOperator();


oo.Update(this);


return true;


}


catch (Exception e)




...{


log.write("更新用户信息失败" + e.ToString());


return false;


}


}


}


}

我在调用save方法存对象到数据库时,总是出错.后来看一个提示:

不能将值 NULL 插入列 'userID',表 'stockstar_f2f.dbo.f2f_users';列不允许有空值。INSERT 失败。
语句已终止。Trace info:INSERT INTO [f2f_users] ([username],[lastVisist],[lastIP],[userType]) VALUES (@username,@lastVisist,@lastIP,@userType)

很明显,没有插入主键userID,后来反编译一下,反现:

private UniqueIDType pkType = UniqueIDType.AutoIdentitiy;

原来默认主键是自增长的,后来我查了一下资料,把KeyFeild做了如下修改就保存成功了.

[KeyField("userID", KeyType = UniqueIDType.OtherDefinition)]
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐