首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > .NET > .NET >

System.Exception: 无法将 NULL 值插入列 'UserID',表 'FineBijou.dbo.Log';该列不允许空值。INSERT 失败

2014-01-28 
刚开始用Grove, 我的代码如下: Log lognew Log() log.UserIDuser log.TheTimeSystem.DateTime.Now

 刚开始用Grove,
我的代码如下:

Log log=new Log();
log.UserID="user";
log.TheTime=System.DateTime.Now;
log.IP="IP";
log.Note="test";
Grove.ORM.ObjectOperator oo=new Grove.ORM.ObjectOperator("Server=127.0.0.1;uid=sa;pwd=zoti;database=FineBijou");
try
{
oo.Insert(log);
}
catch (System.Exception ex)
{
MessageBox.Show(ex.ToString());
}

结果如下:

System.Exception: 无法将 NULL 值插入列 'UserID',表 'FineBijou.dbo.Log';该列不允许空值。INSERT 失败。

语句已终止。Trace info:INSERT INTO [Log] ([TheTime],[Note],[IP]) VALUES (@TheTime,@Note,@IP)

at Grove.Sql.DbOperatorFactory.ExecNonQuery(String cmdText)

at Grove.ORM.ObjectOperator.Insert(Object o)

at WindowsApplication1.Form1.button1_Click(Object sender, EventArgs e) in e:\我的文档\我的工作\microsoft visual studio\练习\windowsapplication1\form1.cs:line 143


为何Grove产生的SQL语句少了UserID这个参数呢?

------解决方法--------------------------------------------------------
LOG的UserID默认情况下是自动增长型的。你看[KeyField]
------解决方法--------------------------------------------------------
[KeyField("OID",KeyType=UniqueIDType.OtherDefinition)]
public stirng UserID
{
get{}
set{}
}
------解决方法--------------------------------------------------------
 你检查一下映射后的实体Log类定义(Log.cs文件),检查一下主键UserID段定义,改为:
[KeyField("UserID",KeyType=UniqueIDType.OtherDefinition)]
public stirng UserID
{
get{return this._UserID;}
set{this._UserID=value;}
}

特别注意:如果你想自己给主键赋值,那在KeyField中一定要加上KeyType=UniqueIDType.OtherDefinition,否则按默认自动增长,即使你使用log.UserID="user",insert中也不会包含UserId段值。
 

        

热点排行