关于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)]
在以前的使用中,因为数据库的主键都是自增长的,一直没有发现问题,不过有一次应用时主键不是自增长的,就出现问题了,生的的一个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)]
相关文章推荐
- 关于Entity Framework更新的几种方式以及可能遇到的问题(附加类型“Model”的实体失败,因为相同类型的其他实体已具有相同的主键值)在使用 "Attach" 方法或者将实体的状态设置为 "Unchanged" 或 "Modified" 时如果图形中的任何实体具有冲突键值,则可能会发生上述行为
- 关于oracle表已设置主键自增仍报违反唯一约束问题
- 基于Grove的.NET应用程序开发提示1--数据库主键设置问题
- 基于Grove的.NET应用程序开发提示1--数据库主键设置问题
- 【转】关于SQL Server2005主键和聚簇索引设置的问题
- 关于mysql的wait_timeout参数 设置不生效的问题
- 关于VC单选按钮不能设置变量的问题以及Group属性的设置
- 关于jfinal,数据表没有设置id为主键报错的情况
- 关于微信端分享页面的设置问题
- 关于设置CNAME记录的问题
- 关于MSSQL导入导出时主键与约束丢失的问题解决
- 关于初学java设置环境变量classpath的问题
- 关于在C#中设置热键的问题
- 关于RHEL的YUM设置问题
- 关于自适应屏幕,设置子元素浮动,父div不能包裹子div,子元素中内容溢出的问题。
- 关于设置sql server 2008服务器属性时出现的无法加载xplog70.dll文件的问题
- 关于sqlserver 链接服务器 asni nulls 和ansiwarnings设置的问题
- 关于fckeditor设置不可编辑的问题解决方案
- iOS 关于16进制RGB颜色设置问题
- Qt关于设置子窗口样式表不生效问题