C# 无法使用nhibernate插入到表中
我只是在学习nhibernate并尝试创建第一个示例 我创建了一个空的基于服务的数据库,并编写了映射和一些代码:C# 无法使用nhibernate插入到表中,c#,.net,sql-server-2008,nhibernate,C#,.net,Sql Server 2008,Nhibernate,我只是在学习nhibernate并尝试创建第一个示例 我创建了一个空的基于服务的数据库,并编写了映射和一些代码: namespace lab { public class Skill { public virtual int Id { get; protected set; } public virtual string Description { get; set; } } } NHibernate.Connection.DriverC
namespace lab
{
public class Skill
{
public virtual int Id { get; protected set; }
public virtual string Description { get; set; }
}
}
NHibernate.Connection.DriverConnectionProvider
NHibernate.Driver.SqlClientDriver
NHibernate.dialogue.mssql2008dialogue
数据源=。\SQLEXPRESS;AttachDbFilename=C:\Users\Dmitry\Desktop\lab\lab\lab\DataBase.mdf;综合安全=真实;用户实例=True
var配置=新配置;
配置Configure@C:\Users\dmitry\Desktop\lab\lab\hibernate.cfg.xml;
var session=configuration.BuildSessionFactory.OpenSession;
var transaction=session.BeginTransaction;
var skill=新技能{Description=C};
会话.保存技能;
事务。提交;
当我运行此命令时,总是会出现无法插入的错误:
插入技能描述值;
选择范围\标识
无效的对象名\Skill\
我没有像nhibernate自己创建表那样创建表
您能帮我找出它不工作的原因吗?要让NHibernate创建DB架构,请在构建SessionFactory之前添加以下行:
new NHibernate.Tool.hbm2ddl.SchemaExport(configuration)
.Execute(false, true, false);
此方法的签名是
public void Execute(bool script, bool export, bool justDrop);
脚本-如果这是真的,那么生成的模式脚本将写入控制台。
导出-如果这是真的,那么生成的模式脚本将针对配置的数据库运行。
justDrop-如果这是真的,那么总是被删除的表。
有关导出架构功能的更多信息,请参见。此解决方案有效,但它会从另一个表中清除我的所有数据。我发现发生异常的根目录: 检查表中的Id列。“Id”列应递增。在“创建表”下,需要将IDENTITY设置为unique字段,如下所示:
CREATE TABLE dbo.aTable (ID_User INTEGER NOT NULL PRIMARY KEY IDENTITY(1,1), Name VARCHAR(30)) END
谢谢你的帮助。这真的很有帮助!